1 : <?php
2 : /**
3 : * Smarty Internal Plugin Templateparser
4 : *
5 : * This is the template parser.
6 : * It is generated from the internal.templateparser.y file
7 : * @package Smarty
8 : * @subpackage Compiler
9 : * @author Uwe Tews
10 : */
11 :
12 : /**
13 : * This can be used to store both the string representation of
14 : * a token, and any useful meta-data associated with the token.
15 : *
16 : * meta-data should be stored as an array
17 : */
18 1 : class TP_yyToken implements ArrayAccess
19 : {
20 : public $string = '';
21 : public $metadata = array();
22 :
23 : function __construct($s, $m = array())
24 : {
25 0 : if ($s instanceof TP_yyToken) {
26 0 : $this->string = $s->string;
27 0 : $this->metadata = $s->metadata;
28 0 : } else {
29 0 : $this->string = (string) $s;
30 0 : if ($m instanceof TP_yyToken) {
31 0 : $this->metadata = $m->metadata;
32 0 : } elseif (is_array($m)) {
33 0 : $this->metadata = $m;
34 0 : }
35 : }
36 0 : }
37 :
38 : function __toString()
39 : {
40 0 : return $this->_string;
41 : }
42 :
43 : function offsetExists($offset)
44 : {
45 0 : return isset($this->metadata[$offset]);
46 : }
47 :
48 : function offsetGet($offset)
49 : {
50 0 : return $this->metadata[$offset];
51 : }
52 :
53 : function offsetSet($offset, $value)
54 : {
55 0 : if ($offset === null) {
56 0 : if (isset($value[0])) {
57 0 : $x = ($value instanceof TP_yyToken) ?
58 0 : $value->metadata : $value;
59 0 : $this->metadata = array_merge($this->metadata, $x);
60 0 : return;
61 : }
62 0 : $offset = count($this->metadata);
63 0 : }
64 0 : if ($value === null) {
65 0 : return;
66 : }
67 0 : if ($value instanceof TP_yyToken) {
68 0 : if ($value->metadata) {
69 0 : $this->metadata[$offset] = $value->metadata;
70 0 : }
71 0 : } elseif ($value) {
72 0 : $this->metadata[$offset] = $value;
73 0 : }
74 0 : }
75 :
76 : function offsetUnset($offset)
77 : {
78 0 : unset($this->metadata[$offset]);
79 0 : }
80 : }
81 :
82 : /** The following structure represents a single element of the
83 : * parser's stack. Information stored includes:
84 : *
85 : * + The state number for the parser at this level of the stack.
86 : *
87 : * + The value of the token stored at this level of the stack.
88 : * (In other words, the "major" token.)
89 : *
90 : * + The semantic value stored at this level of the stack. This is
91 : * the information used by the action routines in the grammar.
92 : * It is sometimes called the "minor" token.
93 : */
94 : class TP_yyStackEntry
95 1 : {
96 : public $stateno; /* The state-number */
97 : public $major; /* The major token value. This is the code
98 : ** number for the token at this stack level */
99 : public $minor; /* The user-supplied minor token value. This
100 : ** is the value of the token */
101 : };
102 :
103 : // code external to the class is included here
104 :
105 : // declare_class is output here
106 : #line 12 "internal.templateparser.y"
107 : class Smarty_Internal_Templateparser#line 109 "internal.templateparser.php"
108 1 : {
109 : /* First off, code is included which follows the "include_class" declaration
110 : ** in the input file. */
111 : #line 14 "internal.templateparser.y"
112 :
113 : // states whether the parse was successful or not
114 : public $successful = true;
115 : public $retvalue = 0;
116 : private $lex;
117 : private $internalError = false;
118 :
119 : function __construct($lex, $compiler) {
120 : // set instance object
121 336 : self::instance($this);
122 336 : $this->lex = $lex;
123 336 : $this->compiler = $compiler;
124 336 : $this->smarty = $this->compiler->smarty;
125 336 : $this->template = $this->compiler->template;
126 336 : $this->cacher = $this->template->cacher_object;
127 336 : $this->nocache = false;
128 336 : $this->prefix_code = array();
129 336 : $this->prefix_number = 0;
130 336 : }
131 : public static function &instance($new_instance = null)
132 : {
133 336 : static $instance = null;
134 336 : if (isset($new_instance) && is_object($new_instance))
135 336 : $instance = $new_instance;
136 336 : return $instance;
137 : }
138 :
139 : #line 142 "internal.templateparser.php"
140 :
141 : /* Next is all token values, as class constants
142 : */
143 : /*
144 : ** These constants (all generated automatically by the parser generator)
145 : ** specify the various kinds of tokens (terminals) that the parser
146 : ** understands.
147 : **
148 : ** Each symbol here is a terminal symbol in the grammar.
149 : */
150 : const TP_OTHER = 1;
151 : const TP_LDELSLASH = 2;
152 : const TP_LDEL = 3;
153 : const TP_RDEL = 4;
154 : const TP_PHP = 5;
155 : const TP_SHORTTAGSTART = 6;
156 : const TP_SHORTTAGEND = 7;
157 : const TP_COMMENTEND = 8;
158 : const TP_COMMENTSTART = 9;
159 : const TP_INTEGER = 10;
160 : const TP_MATH = 11;
161 : const TP_UNIMATH = 12;
162 : const TP_INCDEC = 13;
163 : const TP_OPENP = 14;
164 : const TP_CLOSEP = 15;
165 : const TP_OPENB = 16;
166 : const TP_CLOSEB = 17;
167 : const TP_DOLLAR = 18;
168 : const TP_DOT = 19;
169 : const TP_COMMA = 20;
170 : const TP_COLON = 21;
171 : const TP_DOUBLECOLON = 22;
172 : const TP_SEMICOLON = 23;
173 : const TP_VERT = 24;
174 : const TP_EQUAL = 25;
175 : const TP_SPACE = 26;
176 : const TP_PTR = 27;
177 : const TP_APTR = 28;
178 : const TP_ID = 29;
179 : const TP_EQUALS = 30;
180 : const TP_NOTEQUALS = 31;
181 : const TP_GREATERTHAN = 32;
182 : const TP_LESSTHAN = 33;
183 : const TP_GREATEREQUAL = 34;
184 : const TP_LESSEQUAL = 35;
185 : const TP_IDENTITY = 36;
186 : const TP_NONEIDENTITY = 37;
187 : const TP_NOT = 38;
188 : const TP_LAND = 39;
189 : const TP_LOR = 40;
190 : const TP_LXOR = 41;
191 : const TP_QUOTE = 42;
192 : const TP_SINGLEQUOTE = 43;
193 : const TP_BOOLEAN = 44;
194 : const TP_NULL = 45;
195 : const TP_AS = 46;
196 : const TP_ANDSYM = 47;
197 : const TP_BACKTICK = 48;
198 : const TP_HATCH = 49;
199 : const TP_AT = 50;
200 : const TP_ISODD = 51;
201 : const TP_ISNOTODD = 52;
202 : const TP_ISEVEN = 53;
203 : const TP_ISNOTEVEN = 54;
204 : const TP_ISODDBY = 55;
205 : const TP_ISNOTODDBY = 56;
206 : const TP_ISEVENBY = 57;
207 : const TP_ISNOTEVENBY = 58;
208 : const TP_ISDIVBY = 59;
209 : const TP_ISNOTDIVBY = 60;
210 : const TP_ISIN = 61;
211 : const TP_LITERALSTART = 62;
212 : const TP_LITERALEND = 63;
213 : const TP_LDELIMTAG = 64;
214 : const TP_RDELIMTAG = 65;
215 : const TP_PHPSTART = 66;
216 : const TP_PHPEND = 67;
217 : const TP_XML = 68;
218 : const YY_NO_ACTION = 438;
219 : const YY_ACCEPT_ACTION = 437;
220 : const YY_ERROR_ACTION = 436;
221 :
222 : /* Next are that tables used to determine what action to take based on the
223 : ** current state and lookahead token. These tables are used to implement
224 : ** functions that take a state number and lookahead value and return an
225 : ** action integer.
226 : **
227 : ** Suppose the action integer is N. Then the action is determined as
228 : ** follows
229 : **
230 : ** 0 <= N < self::YYNSTATE Shift N. That is,
231 : ** push the lookahead
232 : ** token onto the stack
233 : ** and goto state N.
234 : **
235 : ** self::YYNSTATE <= N < self::YYNSTATE+self::YYNRULE Reduce by rule N-YYNSTATE.
236 : **
237 : ** N == self::YYNSTATE+self::YYNRULE A syntax error has occurred.
238 : **
239 : ** N == self::YYNSTATE+self::YYNRULE+1 The parser accepts its
240 : ** input. (and concludes parsing)
241 : **
242 : ** N == self::YYNSTATE+self::YYNRULE+2 No such action. Denotes unused
243 : ** slots in the yy_action[] table.
244 : **
245 : ** The action table is constructed as a single large static array $yy_action.
246 : ** Given state S and lookahead X, the action is computed as
247 : **
248 : ** self::$yy_action[self::$yy_shift_ofst[S] + X ]
249 : **
250 : ** If the index value self::$yy_shift_ofst[S]+X is out of range or if the value
251 : ** self::$yy_lookahead[self::$yy_shift_ofst[S]+X] is not equal to X or if
252 : ** self::$yy_shift_ofst[S] is equal to self::YY_SHIFT_USE_DFLT, it means that
253 : ** the action is not in the table and that self::$yy_default[S] should be used instead.
254 : **
255 : ** The formula above is for computing the action when the lookahead is
256 : ** a terminal symbol. If the lookahead is a non-terminal (as occurs after
257 : ** a reduce action) then the static $yy_reduce_ofst array is used in place of
258 : ** the static $yy_shift_ofst array and self::YY_REDUCE_USE_DFLT is used in place of
259 : ** self::YY_SHIFT_USE_DFLT.
260 : **
261 : ** The following are the tables generated in this section:
262 : **
263 : ** self::$yy_action A single table containing all actions.
264 : ** self::$yy_lookahead A table containing the lookahead for each entry in
265 : ** yy_action. Used to detect hash collisions.
266 : ** self::$yy_shift_ofst For each state, the offset into self::$yy_action for
267 : ** shifting terminals.
268 : ** self::$yy_reduce_ofst For each state, the offset into self::$yy_action for
269 : ** shifting non-terminals after a reduce.
270 : ** self::$yy_default Default action for each state.
271 : */
272 : const YY_SZ_ACTTAB = 1094;
273 : static public $yy_action = array(
274 : /* 0 */ 163, 27, 115, 176, 182, 239, 231, 230, 143, 183,
275 : /* 10 */ 35, 202, 10, 203, 12, 67, 58, 252, 251, 244,
276 : /* 20 */ 243, 9, 8, 6, 11, 2, 5, 141, 437, 50,
277 : /* 30 */ 208, 205, 148, 202, 13, 203, 4, 250, 142, 37,
278 : /* 40 */ 39, 57, 234, 236, 202, 142, 203, 45, 239, 231,
279 : /* 50 */ 230, 266, 256, 255, 257, 258, 276, 270, 273, 241,
280 : /* 60 */ 252, 251, 244, 243, 9, 8, 6, 11, 2, 5,
281 : /* 70 */ 17, 22, 239, 231, 230, 240, 227, 223, 109, 142,
282 : /* 80 */ 31, 164, 34, 41, 252, 251, 244, 243, 9, 8,
283 : /* 90 */ 6, 11, 2, 5, 264, 163, 27, 269, 113, 129,
284 : /* 100 */ 239, 231, 230, 143, 98, 35, 212, 25, 268, 12,
285 : /* 110 */ 190, 58, 252, 251, 244, 243, 9, 8, 6, 11,
286 : /* 120 */ 2, 5, 40, 96, 207, 163, 27, 142, 222, 47,
287 : /* 130 */ 209, 23, 69, 268, 22, 39, 57, 234, 236, 163,
288 : /* 140 */ 27, 202, 45, 203, 272, 101, 278, 143, 201, 35,
289 : /* 150 */ 22, 25, 22, 12, 198, 66, 30, 163, 27, 178,
290 : /* 160 */ 269, 275, 71, 33, 21, 143, 133, 35, 164, 10,
291 : /* 170 */ 188, 12, 184, 62, 26, 15, 169, 237, 269, 39,
292 : /* 180 */ 57, 234, 236, 180, 134, 63, 45, 213, 221, 64,
293 : /* 190 */ 142, 210, 178, 4, 275, 71, 116, 39, 57, 234,
294 : /* 200 */ 236, 163, 27, 238, 45, 279, 175, 22, 94, 143,
295 : /* 210 */ 237, 35, 142, 25, 242, 12, 180, 58, 266, 256,
296 : /* 220 */ 255, 257, 258, 276, 270, 273, 17, 187, 141, 26,
297 : /* 230 */ 196, 163, 18, 269, 109, 149, 142, 55, 1, 167,
298 : /* 240 */ 150, 39, 57, 234, 236, 163, 27, 139, 45, 34,
299 : /* 250 */ 72, 155, 189, 143, 158, 35, 142, 25, 164, 12,
300 : /* 260 */ 178, 58, 275, 71, 102, 124, 176, 182, 199, 111,
301 : /* 270 */ 233, 226, 40, 279, 175, 130, 94, 42, 237, 268,
302 : /* 280 */ 178, 157, 275, 71, 180, 39, 57, 234, 236, 163,
303 : /* 290 */ 27, 29, 45, 279, 175, 142, 85, 143, 237, 35,
304 : /* 300 */ 32, 25, 37, 12, 180, 66, 66, 174, 46, 92,
305 : /* 310 */ 118, 114, 128, 7, 192, 66, 137, 107, 196, 163,
306 : /* 320 */ 18, 268, 131, 71, 189, 19, 173, 22, 259, 39,
307 : /* 330 */ 57, 234, 236, 163, 27, 139, 45, 45, 164, 154,
308 : /* 340 */ 211, 143, 191, 35, 180, 25, 45, 12, 178, 66,
309 : /* 350 */ 275, 71, 102, 269, 202, 103, 203, 22, 260, 195,
310 : /* 360 */ 136, 279, 175, 215, 94, 42, 237, 89, 178, 179,
311 : /* 370 */ 275, 71, 180, 39, 57, 234, 236, 163, 27, 66,
312 : /* 380 */ 45, 279, 175, 269, 95, 143, 237, 35, 142, 25,
313 : /* 390 */ 156, 12, 180, 58, 160, 71, 249, 17, 110, 129,
314 : /* 400 */ 172, 204, 127, 31, 135, 109, 41, 233, 268, 197,
315 : /* 410 */ 45, 87, 220, 38, 38, 14, 180, 39, 57, 234,
316 : /* 420 */ 236, 73, 224, 178, 45, 275, 71, 52, 53, 176,
317 : /* 430 */ 182, 75, 151, 138, 163, 27, 144, 145, 247, 94,
318 : /* 440 */ 238, 237, 143, 193, 132, 204, 25, 180, 12, 142,
319 : /* 450 */ 66, 17, 228, 206, 205, 163, 27, 197, 43, 109,
320 : /* 460 */ 164, 137, 19, 143, 142, 37, 178, 25, 275, 71,
321 : /* 470 */ 16, 66, 159, 71, 39, 57, 234, 236, 91, 265,
322 : /* 480 */ 262, 45, 137, 123, 237, 166, 71, 202, 233, 203,
323 : /* 490 */ 180, 281, 17, 189, 180, 39, 57, 234, 236, 129,
324 : /* 500 */ 109, 178, 45, 275, 71, 52, 28, 180, 178, 80,
325 : /* 510 */ 275, 71, 52, 22, 279, 175, 77, 94, 245, 237,
326 : /* 520 */ 186, 279, 175, 54, 94, 180, 237, 147, 214, 88,
327 : /* 530 */ 228, 248, 180, 153, 232, 162, 261, 228, 189, 269,
328 : /* 540 */ 164, 178, 164, 275, 71, 52, 267, 271, 178, 81,
329 : /* 550 */ 275, 71, 52, 164, 279, 175, 78, 94, 164, 237,
330 : /* 560 */ 158, 279, 175, 204, 94, 180, 237, 168, 194, 71,
331 : /* 570 */ 228, 178, 180, 275, 71, 52, 263, 228, 178, 83,
332 : /* 580 */ 275, 71, 52, 126, 279, 175, 79, 94, 56, 237,
333 : /* 590 */ 180, 279, 175, 246, 94, 180, 237, 129, 164, 93,
334 : /* 600 */ 228, 66, 180, 189, 146, 254, 178, 228, 275, 71,
335 : /* 610 */ 52, 68, 277, 112, 76, 20, 271, 38, 104, 279,
336 : /* 620 */ 175, 24, 94, 178, 237, 275, 71, 52, 268, 122,
337 : /* 630 */ 180, 82, 45, 204, 233, 228, 279, 175, 185, 94,
338 : /* 640 */ 178, 237, 275, 71, 52, 90, 253, 180, 84, 216,
339 : /* 650 */ 60, 59, 228, 279, 175, 66, 94, 219, 237, 178,
340 : /* 660 */ 189, 275, 71, 51, 180, 170, 165, 74, 181, 228,
341 : /* 670 */ 152, 15, 279, 175, 235, 94, 178, 237, 275, 71,
342 : /* 680 */ 100, 97, 200, 180, 177, 199, 45, 271, 228, 279,
343 : /* 690 */ 175, 36, 94, 218, 237, 3, 164, 274, 61, 178,
344 : /* 700 */ 180, 275, 71, 100, 70, 278, 33, 265, 140, 225,
345 : /* 710 */ 265, 265, 279, 175, 265, 94, 265, 237, 265, 265,
346 : /* 720 */ 265, 265, 178, 180, 275, 71, 102, 265, 265, 265,
347 : /* 730 */ 265, 265, 217, 265, 265, 279, 175, 265, 94, 265,
348 : /* 740 */ 237, 265, 265, 161, 265, 265, 180, 178, 265, 275,
349 : /* 750 */ 71, 102, 265, 265, 178, 265, 275, 71, 265, 265,
350 : /* 760 */ 279, 175, 265, 94, 265, 237, 265, 229, 171, 265,
351 : /* 770 */ 265, 180, 237, 178, 265, 275, 71, 121, 180, 265,
352 : /* 780 */ 265, 265, 265, 265, 265, 265, 279, 175, 265, 94,
353 : /* 790 */ 265, 237, 265, 265, 265, 265, 178, 180, 275, 71,
354 : /* 800 */ 119, 265, 265, 265, 265, 265, 265, 265, 265, 279,
355 : /* 810 */ 175, 265, 94, 265, 237, 265, 265, 265, 265, 265,
356 : /* 820 */ 180, 178, 265, 275, 71, 125, 265, 265, 178, 265,
357 : /* 830 */ 275, 71, 265, 265, 279, 175, 265, 94, 265, 237,
358 : /* 840 */ 265, 280, 265, 265, 265, 180, 237, 178, 265, 275,
359 : /* 850 */ 71, 106, 180, 265, 265, 265, 265, 265, 265, 265,
360 : /* 860 */ 279, 175, 265, 94, 265, 237, 265, 265, 265, 265,
361 : /* 870 */ 178, 180, 275, 71, 48, 265, 265, 265, 265, 265,
362 : /* 880 */ 265, 265, 265, 279, 175, 265, 94, 265, 237, 265,
363 : /* 890 */ 265, 265, 265, 265, 180, 178, 265, 275, 71, 105,
364 : /* 900 */ 265, 265, 265, 265, 265, 265, 265, 265, 279, 175,
365 : /* 910 */ 265, 94, 265, 237, 265, 265, 265, 265, 265, 180,
366 : /* 920 */ 265, 178, 265, 275, 71, 108, 265, 265, 265, 265,
367 : /* 930 */ 265, 265, 265, 265, 279, 175, 265, 94, 265, 237,
368 : /* 940 */ 265, 265, 265, 265, 178, 180, 275, 71, 99, 265,
369 : /* 950 */ 265, 265, 265, 265, 265, 265, 265, 279, 175, 265,
370 : /* 960 */ 94, 265, 237, 265, 265, 265, 265, 265, 180, 178,
371 : /* 970 */ 265, 275, 71, 120, 265, 265, 265, 265, 265, 265,
372 : /* 980 */ 265, 265, 279, 175, 265, 94, 265, 237, 265, 265,
373 : /* 990 */ 265, 265, 265, 180, 265, 178, 265, 275, 65, 49,
374 : /* 1000 */ 265, 265, 265, 265, 265, 265, 265, 265, 279, 175,
375 : /* 1010 */ 265, 94, 265, 237, 265, 265, 265, 265, 178, 180,
376 : /* 1020 */ 275, 65, 44, 265, 265, 265, 265, 265, 265, 265,
377 : /* 1030 */ 265, 279, 175, 265, 94, 265, 237, 265, 265, 265,
378 : /* 1040 */ 265, 265, 180, 178, 265, 275, 71, 117, 265, 265,
379 : /* 1050 */ 265, 265, 265, 265, 265, 265, 279, 175, 265, 94,
380 : /* 1060 */ 265, 237, 265, 265, 265, 265, 265, 180, 265, 178,
381 : /* 1070 */ 265, 275, 71, 265, 265, 265, 265, 265, 265, 265,
382 : /* 1080 */ 265, 265, 279, 175, 265, 86, 265, 237, 265, 265,
383 : /* 1090 */ 265, 265, 265, 180,
384 : );
385 : static public $yy_lookahead = array(
386 : /* 0 */ 2, 3, 80, 11, 12, 39, 40, 41, 10, 17,
387 : /* 10 */ 12, 1, 14, 3, 16, 29, 18, 51, 52, 53,
388 : /* 20 */ 54, 55, 56, 57, 58, 59, 60, 29, 70, 71,
389 : /* 30 */ 72, 73, 23, 1, 20, 3, 38, 4, 24, 47,
390 : /* 40 */ 42, 43, 44, 45, 1, 24, 3, 49, 39, 40,
391 : /* 50 */ 41, 30, 31, 32, 33, 34, 35, 36, 37, 4,
392 : /* 60 */ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
393 : /* 70 */ 14, 3, 39, 40, 41, 43, 15, 67, 22, 24,
394 : /* 80 */ 16, 26, 61, 19, 51, 52, 53, 54, 55, 56,
395 : /* 90 */ 57, 58, 59, 60, 1, 2, 3, 29, 78, 79,
396 : /* 100 */ 39, 40, 41, 10, 96, 12, 63, 14, 88, 16,
397 : /* 110 */ 48, 18, 51, 52, 53, 54, 55, 56, 57, 58,
398 : /* 120 */ 59, 60, 29, 78, 1, 2, 3, 24, 5, 6,
399 : /* 130 */ 7, 28, 9, 88, 3, 42, 43, 44, 45, 2,
400 : /* 140 */ 3, 1, 49, 3, 13, 96, 101, 10, 8, 12,
401 : /* 150 */ 3, 14, 3, 16, 17, 18, 25, 2, 3, 73,
402 : /* 160 */ 29, 75, 76, 21, 3, 10, 29, 12, 26, 14,
403 : /* 170 */ 4, 16, 86, 18, 25, 14, 29, 91, 29, 42,
404 : /* 180 */ 43, 44, 45, 97, 29, 62, 49, 64, 65, 66,
405 : /* 190 */ 24, 68, 73, 38, 75, 76, 77, 42, 43, 44,
406 : /* 200 */ 45, 2, 3, 15, 49, 86, 87, 3, 89, 10,
407 : /* 210 */ 91, 12, 24, 14, 29, 16, 97, 18, 30, 31,
408 : /* 220 */ 32, 33, 34, 35, 36, 37, 14, 48, 29, 25,
409 : /* 230 */ 1, 2, 3, 29, 22, 50, 24, 84, 26, 27,
410 : /* 240 */ 18, 42, 43, 44, 45, 2, 3, 18, 49, 61,
411 : /* 250 */ 15, 29, 99, 10, 50, 12, 24, 14, 26, 16,
412 : /* 260 */ 73, 18, 75, 76, 77, 95, 11, 12, 98, 78,
413 : /* 270 */ 100, 42, 29, 86, 87, 4, 89, 48, 91, 88,
414 : /* 280 */ 73, 94, 75, 76, 97, 42, 43, 44, 45, 2,
415 : /* 290 */ 3, 3, 49, 86, 87, 24, 89, 10, 91, 12,
416 : /* 300 */ 3, 14, 47, 16, 97, 18, 18, 10, 80, 84,
417 : /* 310 */ 20, 78, 79, 23, 1, 18, 29, 29, 1, 2,
418 : /* 320 */ 3, 88, 75, 76, 99, 25, 29, 3, 4, 42,
419 : /* 330 */ 43, 44, 45, 2, 3, 18, 49, 49, 26, 27,
420 : /* 340 */ 93, 10, 29, 12, 97, 14, 49, 16, 73, 18,
421 : /* 350 */ 75, 76, 77, 29, 1, 96, 3, 3, 4, 42,
422 : /* 360 */ 29, 86, 87, 100, 89, 48, 91, 74, 73, 94,
423 : /* 370 */ 75, 76, 97, 42, 43, 44, 45, 2, 3, 18,
424 : /* 380 */ 49, 86, 87, 29, 89, 10, 91, 12, 24, 14,
425 : /* 390 */ 29, 16, 97, 18, 75, 76, 43, 14, 78, 79,
426 : /* 400 */ 17, 108, 95, 16, 29, 22, 19, 100, 88, 73,
427 : /* 410 */ 49, 74, 17, 27, 27, 20, 97, 42, 43, 44,
428 : /* 420 */ 45, 29, 4, 73, 49, 75, 76, 77, 92, 11,
429 : /* 430 */ 12, 81, 82, 83, 2, 3, 86, 87, 4, 89,
430 : /* 440 */ 15, 91, 10, 107, 4, 108, 14, 97, 16, 24,
431 : /* 450 */ 18, 14, 102, 72, 73, 2, 3, 73, 96, 22,
432 : /* 460 */ 26, 29, 25, 10, 24, 47, 73, 14, 75, 76,
433 : /* 470 */ 14, 18, 75, 76, 42, 43, 44, 45, 84, 86,
434 : /* 480 */ 87, 49, 29, 95, 91, 75, 76, 1, 100, 3,
435 : /* 490 */ 97, 107, 14, 99, 97, 42, 43, 44, 45, 79,
436 : /* 500 */ 22, 73, 49, 75, 76, 77, 28, 97, 73, 81,
437 : /* 510 */ 75, 76, 77, 3, 86, 87, 81, 89, 4, 91,
438 : /* 520 */ 4, 86, 87, 84, 89, 97, 91, 19, 29, 74,
439 : /* 530 */ 102, 4, 97, 85, 4, 29, 4, 102, 99, 29,
440 : /* 540 */ 26, 73, 26, 75, 76, 77, 4, 99, 73, 81,
441 : /* 550 */ 75, 76, 77, 26, 86, 87, 81, 89, 26, 91,
442 : /* 560 */ 50, 86, 87, 108, 89, 97, 91, 46, 75, 76,
443 : /* 570 */ 102, 73, 97, 75, 76, 77, 4, 102, 73, 81,
444 : /* 580 */ 75, 76, 77, 29, 86, 87, 81, 89, 84, 91,
445 : /* 590 */ 97, 86, 87, 29, 89, 97, 91, 79, 26, 74,
446 : /* 600 */ 102, 18, 97, 99, 46, 10, 73, 102, 75, 76,
447 : /* 610 */ 77, 18, 15, 96, 81, 25, 99, 27, 78, 86,
448 : /* 620 */ 87, 103, 89, 73, 91, 75, 76, 77, 88, 95,
449 : /* 630 */ 97, 81, 49, 108, 100, 102, 86, 87, 1, 89,
450 : /* 640 */ 73, 91, 75, 76, 77, 84, 4, 97, 81, 15,
451 : /* 650 */ 18, 18, 102, 86, 87, 18, 89, 7, 91, 73,
452 : /* 660 */ 99, 75, 76, 77, 97, 21, 29, 81, 49, 102,
453 : /* 670 */ 29, 14, 86, 87, 29, 89, 73, 91, 75, 76,
454 : /* 680 */ 77, 96, 108, 97, 49, 98, 49, 99, 102, 86,
455 : /* 690 */ 87, 90, 89, 88, 91, 104, 26, 82, 18, 73,
456 : /* 700 */ 97, 75, 76, 77, 93, 101, 21, 109, 105, 106,
457 : /* 710 */ 109, 109, 86, 87, 109, 89, 109, 91, 109, 109,
458 : /* 720 */ 109, 109, 73, 97, 75, 76, 77, 109, 109, 109,
459 : /* 730 */ 109, 109, 106, 109, 109, 86, 87, 109, 89, 109,
460 : /* 740 */ 91, 109, 109, 94, 109, 109, 97, 73, 109, 75,
461 : /* 750 */ 76, 77, 109, 109, 73, 109, 75, 76, 109, 109,
462 : /* 760 */ 86, 87, 109, 89, 109, 91, 109, 86, 94, 109,
463 : /* 770 */ 109, 97, 91, 73, 109, 75, 76, 77, 97, 109,
464 : /* 780 */ 109, 109, 109, 109, 109, 109, 86, 87, 109, 89,
465 : /* 790 */ 109, 91, 109, 109, 109, 109, 73, 97, 75, 76,
466 : /* 800 */ 77, 109, 109, 109, 109, 109, 109, 109, 109, 86,
467 : /* 810 */ 87, 109, 89, 109, 91, 109, 109, 109, 109, 109,
468 : /* 820 */ 97, 73, 109, 75, 76, 77, 109, 109, 73, 109,
469 : /* 830 */ 75, 76, 109, 109, 86, 87, 109, 89, 109, 91,
470 : /* 840 */ 109, 86, 109, 109, 109, 97, 91, 73, 109, 75,
471 : /* 850 */ 76, 77, 97, 109, 109, 109, 109, 109, 109, 109,
472 : /* 860 */ 86, 87, 109, 89, 109, 91, 109, 109, 109, 109,
473 : /* 870 */ 73, 97, 75, 76, 77, 109, 109, 109, 109, 109,
474 : /* 880 */ 109, 109, 109, 86, 87, 109, 89, 109, 91, 109,
475 : /* 890 */ 109, 109, 109, 109, 97, 73, 109, 75, 76, 77,
476 : /* 900 */ 109, 109, 109, 109, 109, 109, 109, 109, 86, 87,
477 : /* 910 */ 109, 89, 109, 91, 109, 109, 109, 109, 109, 97,
478 : /* 920 */ 109, 73, 109, 75, 76, 77, 109, 109, 109, 109,
479 : /* 930 */ 109, 109, 109, 109, 86, 87, 109, 89, 109, 91,
480 : /* 940 */ 109, 109, 109, 109, 73, 97, 75, 76, 77, 109,
481 : /* 950 */ 109, 109, 109, 109, 109, 109, 109, 86, 87, 109,
482 : /* 960 */ 89, 109, 91, 109, 109, 109, 109, 109, 97, 73,
483 : /* 970 */ 109, 75, 76, 77, 109, 109, 109, 109, 109, 109,
484 : /* 980 */ 109, 109, 86, 87, 109, 89, 109, 91, 109, 109,
485 : /* 990 */ 109, 109, 109, 97, 109, 73, 109, 75, 76, 77,
486 : /* 1000 */ 109, 109, 109, 109, 109, 109, 109, 109, 86, 87,
487 : /* 1010 */ 109, 89, 109, 91, 109, 109, 109, 109, 73, 97,
488 : /* 1020 */ 75, 76, 77, 109, 109, 109, 109, 109, 109, 109,
489 : /* 1030 */ 109, 86, 87, 109, 89, 109, 91, 109, 109, 109,
490 : /* 1040 */ 109, 109, 97, 73, 109, 75, 76, 77, 109, 109,
491 : /* 1050 */ 109, 109, 109, 109, 109, 109, 86, 87, 109, 89,
492 : /* 1060 */ 109, 91, 109, 109, 109, 109, 109, 97, 109, 73,
493 : /* 1070 */ 109, 75, 76, 109, 109, 109, 109, 109, 109, 109,
494 : /* 1080 */ 109, 109, 86, 87, 109, 89, 109, 91, 109, 109,
495 : /* 1090 */ 109, 109, 109, 97,
496 : );
497 : const YY_SHIFT_USE_DFLT = -35;
498 : const YY_SHIFT_MAX = 171;
499 : static public $yy_shift_ofst = array(
500 : /* 0 */ 123, 155, -2, -2, -2, -2, -2, -2, -2, -2,
501 : /* 10 */ -2, -2, 375, 199, 375, 199, 199, 199, 93, 199,
502 : /* 20 */ 199, 199, 199, 199, 199, 199, 199, 243, 199, 199,
503 : /* 30 */ 199, 137, 287, 331, 432, 453, 453, 453, 288, 317,
504 : /* 40 */ 212, 297, 637, 387, 55, 361, 142, 583, 232, 232,
505 : /* 50 */ 123, 188, 21, 229, 131, 204, 510, 353, 147, 68,
506 : /* 60 */ 68, 68, 147, 486, 486, 590, 68, 312, 68, 486,
507 : /* 70 */ 386, 386, 386, 670, 61, 33, 9, -34, -34, -34,
508 : /* 80 */ -34, -34, -34, -34, -34, -8, 418, 10, 32, 43,
509 : /* 90 */ 354, 324, 149, 140, 255, 255, 434, 64, 64, 440,
510 : /* 100 */ 103, 64, 14, 64, 572, 271, 166, 161, 425, 222,
511 : /* 110 */ 516, 532, 64, 527, 514, 685, 364, 364, 680, 364,
512 : /* 120 */ 364, 364, 386, 386, 386, 364, 456, 386, -35, -35,
513 : /* 130 */ -35, -35, -35, 383, 437, 478, 56, 56, 290, 313,
514 : /* 140 */ 395, 56, 185, 508, 521, 558, 593, 595, 632, 564,
515 : /* 150 */ 554, 530, 542, 642, 641, 657, 619, 634, 499, 650,
516 : /* 160 */ 635, 235, 300, -14, 506, 62, 179, 392, 633, 644,
517 : /* 170 */ 645, 597,
518 : );
519 : const YY_REDUCE_USE_DFLT = -79;
520 : const YY_REDUCE_MAX = 132;
521 : static public $yy_reduce_ofst = array(
522 : /* 0 */ -42, 350, 428, 505, 498, 567, 475, 533, 550, 468,
523 : /* 10 */ 586, 435, 603, 275, 626, 187, 649, 674, 945, 748,
524 : /* 20 */ 797, 822, 774, 723, 119, 848, 896, 922, 970, 871,
525 : /* 30 */ 700, 207, 996, 295, 393, 755, 681, 86, 247, 336,
526 : /* 40 */ 233, 493, 410, 170, 20, 319, 45, 397, 320, 20,
527 : /* 50 */ 381, 518, 518, 384, 448, 517, 517, 455, 504, 394,
528 : /* 60 */ 439, 225, 153, 293, 337, 307, 504, 191, 561, 525,
529 : /* 70 */ 534, 307, 388, 540, 591, 591, 591, 591, 591, 591,
530 : /* 80 */ 591, 591, 591, 591, 591, 601, 601, 574, 574, 574,
531 : /* 90 */ 588, 588, 588, 574, 601, 601, 605, 587, 587, 420,
532 : /* 100 */ 420, 587, 420, 587, 605, 420, 420, 585, 420, 611,
533 : /* 110 */ 605, 605, 587, 605, 605, 604, 420, 420, 615, 420,
534 : /* 120 */ 420, 420, 263, 263, 263, 420, 362, 263, 228, -78,
535 : /* 130 */ 259, 8, 49,
536 : );
537 : static public $yyExpectedTokens = array(
538 : /* 0 */ array(1, 2, 3, 5, 6, 7, 9, 62, 64, 65, 66, 68, ),
539 : /* 1 */ array(2, 3, 10, 12, 14, 16, 18, 29, 38, 42, 43, 44, 45, 49, ),
540 : /* 2 */ array(2, 3, 10, 12, 14, 16, 18, 29, 38, 42, 43, 44, 45, 49, ),
541 : /* 3 */ array(2, 3, 10, 12, 14, 16, 18, 29, 38, 42, 43, 44, 45, 49, ),
542 : /* 4 */ array(2, 3, 10, 12, 14, 16, 18, 29, 38, 42, 43, 44, 45, 49, ),
543 : /* 5 */ array(2, 3, 10, 12, 14, 16, 18, 29, 38, 42, 43, 44, 45, 49, ),
544 : /* 6 */ array(2, 3, 10, 12, 14, 16, 18, 29, 38, 42, 43, 44, 45, 49, ),
545 : /* 7 */ array(2, 3, 10, 12, 14, 16, 18, 29, 38, 42, 43, 44, 45, 49, ),
546 : /* 8 */ array(2, 3, 10, 12, 14, 16, 18, 29, 38, 42, 43, 44, 45, 49, ),
547 : /* 9 */ array(2, 3, 10, 12, 14, 16, 18, 29, 38, 42, 43, 44, 45, 49, ),
548 : /* 10 */ array(2, 3, 10, 12, 14, 16, 18, 29, 38, 42, 43, 44, 45, 49, ),
549 : /* 11 */ array(2, 3, 10, 12, 14, 16, 18, 29, 38, 42, 43, 44, 45, 49, ),
550 : /* 12 */ array(2, 3, 10, 12, 14, 16, 18, 29, 42, 43, 44, 45, 49, ),
551 : /* 13 */ array(2, 3, 10, 12, 14, 16, 18, 29, 42, 43, 44, 45, 49, ),
552 : /* 14 */ array(2, 3, 10, 12, 14, 16, 18, 29, 42, 43, 44, 45, 49, ),
553 : /* 15 */ array(2, 3, 10, 12, 14, 16, 18, 29, 42, 43, 44, 45, 49, ),
554 : /* 16 */ array(2, 3, 10, 12, 14, 16, 18, 29, 42, 43, 44, 45, 49, ),
555 : /* 17 */ array(2, 3, 10, 12, 14, 16, 18, 29, 42, 43, 44, 45, 49, ),
556 : /* 18 */ array(1, 2, 3, 10, 12, 14, 16, 18, 29, 42, 43, 44, 45, 49, ),
557 : /* 19 */ array(2, 3, 10, 12, 14, 16, 18, 29, 42, 43, 44, 45, 49, ),
558 : /* 20 */ array(2, 3, 10, 12, 14, 16, 18, 29, 42, 43, 44, 45, 49, ),
559 : /* 21 */ array(2, 3, 10, 12, 14, 16, 18, 29, 42, 43, 44, 45, 49, ),
560 : /* 22 */ array(2, 3, 10, 12, 14, 16, 18, 29, 42, 43, 44, 45, 49, ),
561 : /* 23 */ array(2, 3, 10, 12, 14, 16, 18, 29, 42, 43, 44, 45, 49, ),
562 : /* 24 */ array(2, 3, 10, 12, 14, 16, 18, 29, 42, 43, 44, 45, 49, ),
563 : /* 25 */ array(2, 3, 10, 12, 14, 16, 18, 29, 42, 43, 44, 45, 49, ),
564 : /* 26 */ array(2, 3, 10, 12, 14, 16, 18, 29, 42, 43, 44, 45, 49, ),
565 : /* 27 */ array(2, 3, 10, 12, 14, 16, 18, 29, 42, 43, 44, 45, 49, ),
566 : /* 28 */ array(2, 3, 10, 12, 14, 16, 18, 29, 42, 43, 44, 45, 49, ),
567 : /* 29 */ array(2, 3, 10, 12, 14, 16, 18, 29, 42, 43, 44, 45, 49, ),
568 : /* 30 */ array(2, 3, 10, 12, 14, 16, 18, 29, 42, 43, 44, 45, 49, ),
569 : /* 31 */ array(2, 3, 10, 12, 14, 16, 17, 18, 29, 42, 43, 44, 45, 49, ),
570 : /* 32 */ array(2, 3, 10, 12, 14, 16, 18, 29, 42, 43, 44, 45, 49, ),
571 : /* 33 */ array(2, 3, 10, 12, 14, 16, 18, 29, 42, 43, 44, 45, 49, ),
572 : /* 34 */ array(2, 3, 10, 14, 16, 18, 29, 42, 43, 44, 45, 49, ),
573 : /* 35 */ array(2, 3, 10, 14, 18, 29, 42, 43, 44, 45, 49, ),
574 : /* 36 */ array(2, 3, 10, 14, 18, 29, 42, 43, 44, 45, 49, ),
575 : /* 37 */ array(2, 3, 10, 14, 18, 29, 42, 43, 44, 45, 49, ),
576 : /* 38 */ array(3, 18, 29, 49, ),
577 : /* 39 */ array(1, 2, 3, 18, 42, 48, ),
578 : /* 40 */ array(14, 22, 24, 26, 27, ),
579 : /* 41 */ array(3, 10, 18, 29, 49, ),
580 : /* 42 */ array(1, 18, 29, 49, ),
581 : /* 43 */ array(16, 19, 27, ),
582 : /* 44 */ array(4, 24, 26, ),
583 : /* 45 */ array(18, 29, 49, ),
584 : /* 46 */ array(21, 26, ),
585 : /* 47 */ array(18, 49, ),
586 : /* 48 */ array(24, 26, ),
587 : /* 49 */ array(24, 26, ),
588 : /* 50 */ array(1, 2, 3, 5, 6, 7, 9, 62, 64, 65, 66, 68, ),
589 : /* 51 */ array(15, 24, 30, 31, 32, 33, 34, 35, 36, 37, 61, ),
590 : /* 52 */ array(24, 30, 31, 32, 33, 34, 35, 36, 37, 61, ),
591 : /* 53 */ array(1, 2, 3, 18, 42, 48, ),
592 : /* 54 */ array(3, 13, 25, 29, ),
593 : /* 55 */ array(3, 25, 29, 50, ),
594 : /* 56 */ array(3, 29, 50, ),
595 : /* 57 */ array(1, 3, 43, ),
596 : /* 58 */ array(3, 29, ),
597 : /* 59 */ array(3, 29, ),
598 : /* 60 */ array(3, 29, ),
599 : /* 61 */ array(3, 29, ),
600 : /* 62 */ array(3, 29, ),
601 : /* 63 */ array(1, 3, ),
602 : /* 64 */ array(1, 3, ),
603 : /* 65 */ array(25, 27, ),
604 : /* 66 */ array(3, 29, ),
605 : /* 67 */ array(26, 27, ),
606 : /* 68 */ array(3, 29, ),
607 : /* 69 */ array(1, 3, ),
608 : /* 70 */ array(27, ),
609 : /* 71 */ array(27, ),
610 : /* 72 */ array(27, ),
611 : /* 73 */ array(26, ),
612 : /* 74 */ array(15, 39, 40, 41, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, ),
613 : /* 75 */ array(4, 39, 40, 41, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, ),
614 : /* 76 */ array(23, 39, 40, 41, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, ),
615 : /* 77 */ array(39, 40, 41, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, ),
616 : /* 78 */ array(39, 40, 41, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, ),
617 : /* 79 */ array(39, 40, 41, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, ),
618 : /* 80 */ array(39, 40, 41, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, ),
619 : /* 81 */ array(39, 40, 41, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, ),
620 : /* 82 */ array(39, 40, 41, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, ),
621 : /* 83 */ array(39, 40, 41, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, ),
622 : /* 84 */ array(39, 40, 41, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, ),
623 : /* 85 */ array(11, 12, 17, 47, ),
624 : /* 86 */ array(4, 11, 12, 47, ),
625 : /* 87 */ array(1, 3, 67, ),
626 : /* 88 */ array(1, 3, 43, ),
627 : /* 89 */ array(1, 3, 63, ),
628 : /* 90 */ array(3, 4, 29, ),
629 : /* 91 */ array(3, 4, 29, ),
630 : /* 92 */ array(3, 25, 29, ),
631 : /* 93 */ array(1, 3, 8, ),
632 : /* 94 */ array(11, 12, 47, ),
633 : /* 95 */ array(11, 12, 47, ),
634 : /* 96 */ array(4, 26, ),
635 : /* 97 */ array(16, 19, ),
636 : /* 98 */ array(16, 19, ),
637 : /* 99 */ array(4, 24, ),
638 : /* 100 */ array(24, 28, ),
639 : /* 101 */ array(16, 19, ),
640 : /* 102 */ array(20, 24, ),
641 : /* 103 */ array(16, 19, ),
642 : /* 104 */ array(4, 26, ),
643 : /* 105 */ array(4, 24, ),
644 : /* 106 */ array(4, 24, ),
645 : /* 107 */ array(3, 14, ),
646 : /* 108 */ array(15, 24, ),
647 : /* 109 */ array(18, 29, ),
648 : /* 110 */ array(4, 26, ),
649 : /* 111 */ array(4, 26, ),
650 : /* 112 */ array(16, 19, ),
651 : /* 113 */ array(4, 26, ),
652 : /* 114 */ array(4, 26, ),
653 : /* 115 */ array(21, ),
654 : /* 116 */ array(24, ),
655 : /* 117 */ array(24, ),
656 : /* 118 */ array(18, ),
657 : /* 119 */ array(24, ),
658 : /* 120 */ array(24, ),
659 : /* 121 */ array(24, ),
660 : /* 122 */ array(27, ),
661 : /* 123 */ array(27, ),
662 : /* 124 */ array(27, ),
663 : /* 125 */ array(24, ),
664 : /* 126 */ array(14, ),
665 : /* 127 */ array(27, ),
666 : /* 128 */ array(),
667 : /* 129 */ array(),
668 : /* 130 */ array(),
669 : /* 131 */ array(),
670 : /* 132 */ array(),
671 : /* 133 */ array(14, 17, 22, ),
672 : /* 134 */ array(14, 22, 25, ),
673 : /* 135 */ array(14, 22, 28, ),
674 : /* 136 */ array(14, 22, ),
675 : /* 137 */ array(14, 22, ),
676 : /* 138 */ array(20, 23, ),
677 : /* 139 */ array(1, 29, ),
678 : /* 140 */ array(17, 20, ),
679 : /* 141 */ array(14, 22, ),
680 : /* 142 */ array(29, 50, ),
681 : /* 143 */ array(19, ),
682 : /* 144 */ array(46, ),
683 : /* 145 */ array(46, ),
684 : /* 146 */ array(18, ),
685 : /* 147 */ array(10, ),
686 : /* 148 */ array(18, ),
687 : /* 149 */ array(29, ),
688 : /* 150 */ array(29, ),
689 : /* 151 */ array(4, ),
690 : /* 152 */ array(4, ),
691 : /* 153 */ array(4, ),
692 : /* 154 */ array(29, ),
693 : /* 155 */ array(14, ),
694 : /* 156 */ array(49, ),
695 : /* 157 */ array(15, ),
696 : /* 158 */ array(29, ),
697 : /* 159 */ array(7, ),
698 : /* 160 */ array(49, ),
699 : /* 161 */ array(15, ),
700 : /* 162 */ array(25, ),
701 : /* 163 */ array(29, ),
702 : /* 164 */ array(29, ),
703 : /* 165 */ array(48, ),
704 : /* 166 */ array(48, ),
705 : /* 167 */ array(29, ),
706 : /* 168 */ array(18, ),
707 : /* 169 */ array(21, ),
708 : /* 170 */ array(29, ),
709 : /* 171 */ array(15, ),
710 : /* 172 */ array(),
711 : /* 173 */ array(),
712 : /* 174 */ array(),
713 : /* 175 */ array(),
714 : /* 176 */ array(),
715 : /* 177 */ array(),
716 : /* 178 */ array(),
717 : /* 179 */ array(),
718 : /* 180 */ array(),
719 : /* 181 */ array(),
720 : /* 182 */ array(),
721 : /* 183 */ array(),
722 : /* 184 */ array(),
723 : /* 185 */ array(),
724 : /* 186 */ array(),
725 : /* 187 */ array(),
726 : /* 188 */ array(),
727 : /* 189 */ array(),
728 : /* 190 */ array(),
729 : /* 191 */ array(),
730 : /* 192 */ array(),
731 : /* 193 */ array(),
732 : /* 194 */ array(),
733 : /* 195 */ array(),
734 : /* 196 */ array(),
735 : /* 197 */ array(),
736 : /* 198 */ array(),
737 : /* 199 */ array(),
738 : /* 200 */ array(),
739 : /* 201 */ array(),
740 : /* 202 */ array(),
741 : /* 203 */ array(),
742 : /* 204 */ array(),
743 : /* 205 */ array(),
744 : /* 206 */ array(),
745 : /* 207 */ array(),
746 : /* 208 */ array(),
747 : /* 209 */ array(),
748 : /* 210 */ array(),
749 : /* 211 */ array(),
750 : /* 212 */ array(),
751 : /* 213 */ array(),
752 : /* 214 */ array(),
753 : /* 215 */ array(),
754 : /* 216 */ array(),
755 : /* 217 */ array(),
756 : /* 218 */ array(),
757 : /* 219 */ array(),
758 : /* 220 */ array(),
759 : /* 221 */ array(),
760 : /* 222 */ array(),
761 : /* 223 */ array(),
762 : /* 224 */ array(),
763 : /* 225 */ array(),
764 : /* 226 */ array(),
765 : /* 227 */ array(),
766 : /* 228 */ array(),
767 : /* 229 */ array(),
768 : /* 230 */ array(),
769 : /* 231 */ array(),
770 : /* 232 */ array(),
771 : /* 233 */ array(),
772 : /* 234 */ array(),
773 : /* 235 */ array(),
774 : /* 236 */ array(),
775 : /* 237 */ array(),
776 : /* 238 */ array(),
777 : /* 239 */ array(),
778 : /* 240 */ array(),
779 : /* 241 */ array(),
780 : /* 242 */ array(),
781 : /* 243 */ array(),
782 : /* 244 */ array(),
783 : /* 245 */ array(),
784 : /* 246 */ array(),
785 : /* 247 */ array(),
786 : /* 248 */ array(),
787 : /* 249 */ array(),
788 : /* 250 */ array(),
789 : /* 251 */ array(),
790 : /* 252 */ array(),
791 : /* 253 */ array(),
792 : /* 254 */ array(),
793 : /* 255 */ array(),
794 : /* 256 */ array(),
795 : /* 257 */ array(),
796 : /* 258 */ array(),
797 : /* 259 */ array(),
798 : /* 260 */ array(),
799 : /* 261 */ array(),
800 : /* 262 */ array(),
801 : /* 263 */ array(),
802 : /* 264 */ array(),
803 : /* 265 */ array(),
804 : /* 266 */ array(),
805 : /* 267 */ array(),
806 : /* 268 */ array(),
807 : /* 269 */ array(),
808 : /* 270 */ array(),
809 : /* 271 */ array(),
810 : /* 272 */ array(),
811 : /* 273 */ array(),
812 : /* 274 */ array(),
813 : /* 275 */ array(),
814 : /* 276 */ array(),
815 : /* 277 */ array(),
816 : /* 278 */ array(),
817 : /* 279 */ array(),
818 : /* 280 */ array(),
819 : /* 281 */ array(),
820 : );
821 : static public $yy_default = array(
822 : /* 0 */ 436, 436, 436, 436, 436, 436, 436, 436, 436, 436,
823 : /* 10 */ 436, 436, 417, 378, 436, 378, 378, 378, 436, 436,
824 : /* 20 */ 436, 436, 436, 436, 436, 436, 436, 436, 436, 436,
825 : /* 30 */ 436, 436, 436, 436, 436, 436, 436, 436, 436, 436,
826 : /* 40 */ 312, 436, 436, 344, 436, 436, 312, 436, 312, 312,
827 : /* 50 */ 282, 388, 388, 436, 436, 354, 354, 436, 436, 436,
828 : /* 60 */ 436, 436, 436, 436, 436, 347, 436, 312, 436, 436,
829 : /* 70 */ 339, 347, 340, 312, 436, 436, 436, 398, 397, 392,
830 : /* 80 */ 393, 401, 402, 386, 394, 436, 436, 436, 436, 436,
831 : /* 90 */ 436, 436, 436, 436, 318, 383, 436, 369, 370, 436,
832 : /* 100 */ 420, 371, 377, 372, 436, 436, 436, 354, 436, 436,
833 : /* 110 */ 436, 436, 352, 436, 436, 320, 389, 419, 436, 418,
834 : /* 120 */ 316, 306, 341, 342, 345, 313, 354, 366, 382, 382,
835 : /* 130 */ 354, 354, 354, 436, 317, 317, 384, 436, 436, 436,
836 : /* 140 */ 436, 317, 436, 329, 321, 325, 436, 436, 436, 436,
837 : /* 150 */ 436, 314, 436, 436, 436, 343, 436, 436, 436, 436,
838 : /* 160 */ 436, 436, 436, 436, 436, 436, 436, 436, 436, 364,
839 : /* 170 */ 436, 436, 359, 355, 356, 325, 327, 351, 346, 376,
840 : /* 180 */ 349, 350, 326, 360, 324, 430, 296, 424, 365, 362,
841 : /* 190 */ 423, 425, 428, 422, 357, 338, 431, 427, 361, 353,
842 : /* 200 */ 432, 286, 434, 435, 433, 285, 284, 295, 283, 294,
843 : /* 210 */ 293, 373, 287, 288, 348, 368, 375, 416, 310, 292,
844 : /* 220 */ 414, 289, 290, 291, 358, 415, 337, 387, 385, 323,
845 : /* 230 */ 413, 412, 304, 367, 331, 319, 332, 333, 334, 411,
846 : /* 240 */ 335, 426, 380, 396, 395, 298, 379, 300, 297, 336,
847 : /* 250 */ 303, 400, 399, 305, 330, 405, 404, 406, 407, 308,
848 : /* 260 */ 309, 301, 390, 299, 429, 391, 403, 302, 311, 364,
849 : /* 270 */ 409, 363, 307, 410, 315, 328, 408, 374, 381, 321,
850 : /* 280 */ 322, 421,
851 : );
852 : /* The next thing included is series of defines which control
853 : ** various aspects of the generated parser.
854 : ** self::YYNOCODE is a number which corresponds
855 : ** to no legal terminal or nonterminal number. This
856 : ** number is used to fill in empty slots of the hash
857 : ** table.
858 : ** self::YYFALLBACK If defined, this indicates that one or more tokens
859 : ** have fall-back values which should be used if the
860 : ** original value of the token will not parse.
861 : ** self::YYSTACKDEPTH is the maximum depth of the parser's stack.
862 : ** self::YYNSTATE the combined number of states.
863 : ** self::YYNRULE the number of rules in the grammar
864 : ** self::YYERRORSYMBOL is the code number of the error symbol. If not
865 : ** defined, then do no error processing.
866 : */
867 : const YYNOCODE = 110;
868 : const YYSTACKDEPTH = 100;
869 : const YYNSTATE = 282;
870 : const YYNRULE = 154;
871 : const YYERRORSYMBOL = 69;
872 : const YYERRSYMDT = 'yy0';
873 : const YYFALLBACK = 1;
874 : /** The next table maps tokens into fallback tokens. If a construct
875 : * like the following:
876 : *
877 : * %fallback ID X Y Z.
878 : *
879 : * appears in the grammer, then ID becomes a fallback token for X, Y,
880 : * and Z. Whenever one of the tokens X, Y, or Z is input to the parser
881 : * but it does not parse, the type of the token is changed to ID and
882 : * the parse is retried before an error is thrown.
883 : */
884 : static public $yyFallback = array(
885 : 0, /* $ => nothing */
886 : 0, /* OTHER => nothing */
887 : 1, /* LDELSLASH => OTHER */
888 : 1, /* LDEL => OTHER */
889 : 1, /* RDEL => OTHER */
890 : 1, /* PHP => OTHER */
891 : 1, /* SHORTTAGSTART => OTHER */
892 : 1, /* SHORTTAGEND => OTHER */
893 : 1, /* COMMENTEND => OTHER */
894 : 1, /* COMMENTSTART => OTHER */
895 : 1, /* INTEGER => OTHER */
896 : 1, /* MATH => OTHER */
897 : 1, /* UNIMATH => OTHER */
898 : 1, /* INCDEC => OTHER */
899 : 1, /* OPENP => OTHER */
900 : 1, /* CLOSEP => OTHER */
901 : 1, /* OPENB => OTHER */
902 : 1, /* CLOSEB => OTHER */
903 : 1, /* DOLLAR => OTHER */
904 : 1, /* DOT => OTHER */
905 : 1, /* COMMA => OTHER */
906 : 1, /* COLON => OTHER */
907 : 1, /* DOUBLECOLON => OTHER */
908 : 1, /* SEMICOLON => OTHER */
909 : 1, /* VERT => OTHER */
910 : 1, /* EQUAL => OTHER */
911 : 1, /* SPACE => OTHER */
912 : 1, /* PTR => OTHER */
913 : 1, /* APTR => OTHER */
914 : 1, /* ID => OTHER */
915 : 1, /* EQUALS => OTHER */
916 : 1, /* NOTEQUALS => OTHER */
917 : 1, /* GREATERTHAN => OTHER */
918 : 1, /* LESSTHAN => OTHER */
919 : 1, /* GREATEREQUAL => OTHER */
920 : 1, /* LESSEQUAL => OTHER */
921 : 1, /* IDENTITY => OTHER */
922 : 1, /* NONEIDENTITY => OTHER */
923 : 1, /* NOT => OTHER */
924 : 1, /* LAND => OTHER */
925 : 1, /* LOR => OTHER */
926 : 1, /* LXOR => OTHER */
927 : 1, /* QUOTE => OTHER */
928 : 1, /* SINGLEQUOTE => OTHER */
929 : 1, /* BOOLEAN => OTHER */
930 : 1, /* NULL => OTHER */
931 : 1, /* AS => OTHER */
932 : 1, /* ANDSYM => OTHER */
933 : 1, /* BACKTICK => OTHER */
934 : 1, /* HATCH => OTHER */
935 : 1, /* AT => OTHER */
936 : 1, /* ISODD => OTHER */
937 : 1, /* ISNOTODD => OTHER */
938 : 1, /* ISEVEN => OTHER */
939 : 1, /* ISNOTEVEN => OTHER */
940 : 1, /* ISODDBY => OTHER */
941 : 1, /* ISNOTODDBY => OTHER */
942 : 1, /* ISEVENBY => OTHER */
943 : 1, /* ISNOTEVENBY => OTHER */
944 : 1, /* ISDIVBY => OTHER */
945 : 1, /* ISNOTDIVBY => OTHER */
946 : 1, /* ISIN => OTHER */
947 : 0, /* LITERALSTART => nothing */
948 : 0, /* LITERALEND => nothing */
949 : 0, /* LDELIMTAG => nothing */
950 : 0, /* RDELIMTAG => nothing */
951 : 0, /* PHPSTART => nothing */
952 : 0, /* PHPEND => nothing */
953 : 0, /* XML => nothing */
954 : );
955 : /**
956 : * Turn parser tracing on by giving a stream to which to write the trace
957 : * and a prompt to preface each trace message. Tracing is turned off
958 : * by making either argument NULL
959 : *
960 : * Inputs:
961 : *
962 : * - A stream resource to which trace output should be written.
963 : * If NULL, then tracing is turned off.
964 : * - A prefix string written at the beginning of every
965 : * line of trace output. If NULL, then tracing is
966 : * turned off.
967 : *
968 : * Outputs:
969 : *
970 : * - None.
971 : * @param resource
972 : * @param string
973 : */
974 : static function Trace($TraceFILE, $zTracePrompt)
975 : {
976 0 : if (!$TraceFILE) {
977 0 : $zTracePrompt = 0;
978 0 : } elseif (!$zTracePrompt) {
979 0 : $TraceFILE = 0;
980 0 : }
981 0 : self::$yyTraceFILE = $TraceFILE;
982 0 : self::$yyTracePrompt = $zTracePrompt;
983 0 : }
984 :
985 : /**
986 : * Output debug information to output (php://output stream)
987 : */
988 : static function PrintTrace()
989 : {
990 0 : self::$yyTraceFILE = fopen('php://output', 'w');
991 0 : self::$yyTracePrompt = '<br>';
992 0 : }
993 :
994 : /**
995 : * @var resource|0
996 : */
997 : static public $yyTraceFILE;
998 : /**
999 : * String to prepend to debug output
1000 : * @var string|0
1001 : */
1002 : static public $yyTracePrompt;
1003 : /**
1004 : * @var int
1005 : */
1006 : public $yyidx; /* Index of top element in stack */
1007 : /**
1008 : * @var int
1009 : */
1010 : public $yyerrcnt; /* Shifts left before out of the error */
1011 : /**
1012 : * @var array
1013 : */
1014 : public $yystack = array(); /* The parser's stack */
1015 :
1016 : /**
1017 : * For tracing shifts, the names of all terminals and nonterminals
1018 : * are required. The following table supplies these names
1019 : * @var array
1020 : */
1021 : public $yyTokenName = array(
1022 : '$', 'OTHER', 'LDELSLASH', 'LDEL',
1023 : 'RDEL', 'PHP', 'SHORTTAGSTART', 'SHORTTAGEND',
1024 : 'COMMENTEND', 'COMMENTSTART', 'INTEGER', 'MATH',
1025 : 'UNIMATH', 'INCDEC', 'OPENP', 'CLOSEP',
1026 : 'OPENB', 'CLOSEB', 'DOLLAR', 'DOT',
1027 : 'COMMA', 'COLON', 'DOUBLECOLON', 'SEMICOLON',
1028 : 'VERT', 'EQUAL', 'SPACE', 'PTR',
1029 : 'APTR', 'ID', 'EQUALS', 'NOTEQUALS',
1030 : 'GREATERTHAN', 'LESSTHAN', 'GREATEREQUAL', 'LESSEQUAL',
1031 : 'IDENTITY', 'NONEIDENTITY', 'NOT', 'LAND',
1032 : 'LOR', 'LXOR', 'QUOTE', 'SINGLEQUOTE',
1033 : 'BOOLEAN', 'NULL', 'AS', 'ANDSYM',
1034 : 'BACKTICK', 'HATCH', 'AT', 'ISODD',
1035 : 'ISNOTODD', 'ISEVEN', 'ISNOTEVEN', 'ISODDBY',
1036 : 'ISNOTODDBY', 'ISEVENBY', 'ISNOTEVENBY', 'ISDIVBY',
1037 : 'ISNOTDIVBY', 'ISIN', 'LITERALSTART', 'LITERALEND',
1038 : 'LDELIMTAG', 'RDELIMTAG', 'PHPSTART', 'PHPEND',
1039 : 'XML', 'error', 'start', 'template',
1040 : 'template_element', 'smartytag', 'text', 'variable',
1041 : 'varindexed', 'expr', 'attributes', 'modifier',
1042 : 'modparameters', 'ifexprs', 'statement', 'statements',
1043 : 'varvar', 'foraction', 'value', 'array',
1044 : 'attribute', 'exprs', 'math', 'function',
1045 : 'doublequoted', 'method', 'params', 'objectchain',
1046 : 'arrayindex', 'object', 'indexdef', 'varvarele',
1047 : 'objectelement', 'modparameter', 'ifexpr', 'ifcond',
1048 : 'lop', 'arrayelements', 'arrayelement', 'doublequotedcontent',
1049 : 'textelement',
1050 : );
1051 :
1052 : /**
1053 : * For tracing reduce actions, the names of all rules are required.
1054 : * @var array
1055 : */
1056 : static public $yyRuleName = array(
1057 : /* 0 */ "start ::= template",
1058 : /* 1 */ "template ::= template_element",
1059 : /* 2 */ "template ::= template template_element",
1060 : /* 3 */ "template_element ::= smartytag",
1061 : /* 4 */ "template_element ::= COMMENTSTART text COMMENTEND",
1062 : /* 5 */ "template_element ::= LITERALSTART text LITERALEND",
1063 : /* 6 */ "template_element ::= LDELIMTAG",
1064 : /* 7 */ "template_element ::= RDELIMTAG",
1065 : /* 8 */ "template_element ::= PHP",
1066 : /* 9 */ "template_element ::= PHPSTART text PHPEND",
1067 : /* 10 */ "template_element ::= SHORTTAGSTART variable SHORTTAGEND",
1068 : /* 11 */ "template_element ::= XML",
1069 : /* 12 */ "template_element ::= SHORTTAGEND",
1070 : /* 13 */ "template_element ::= OTHER",
1071 : /* 14 */ "smartytag ::= LDEL varindexed EQUAL expr attributes RDEL",
1072 : /* 15 */ "smartytag ::= LDEL expr attributes RDEL",
1073 : /* 16 */ "smartytag ::= LDEL ID attributes RDEL",
1074 : /* 17 */ "smartytag ::= LDEL ID PTR ID attributes RDEL",
1075 : /* 18 */ "smartytag ::= LDEL ID modifier modparameters attributes RDEL",
1076 : /* 19 */ "smartytag ::= LDELSLASH ID attributes RDEL",
1077 : /* 20 */ "smartytag ::= LDELSLASH ID PTR ID RDEL",
1078 : /* 21 */ "smartytag ::= LDEL ID SPACE ifexprs RDEL",
1079 : /* 22 */ "smartytag ::= LDEL ID SPACE statement RDEL",
1080 : /* 23 */ "smartytag ::= LDEL ID SPACE statements SEMICOLON ifexprs SEMICOLON DOLLAR varvar foraction RDEL",
1081 : /* 24 */ "foraction ::= EQUAL expr",
1082 : /* 25 */ "foraction ::= INCDEC",
1083 : /* 26 */ "smartytag ::= LDEL ID SPACE value AS DOLLAR varvar RDEL",
1084 : /* 27 */ "smartytag ::= LDEL ID SPACE array AS DOLLAR varvar RDEL",
1085 : /* 28 */ "attributes ::= attributes attribute",
1086 : /* 29 */ "attributes ::= attribute",
1087 : /* 30 */ "attributes ::=",
1088 : /* 31 */ "attribute ::= SPACE ID EQUAL expr",
1089 : /* 32 */ "statements ::= statement",
1090 : /* 33 */ "statements ::= statements COMMA statement",
1091 : /* 34 */ "statement ::= DOLLAR varvar EQUAL expr",
1092 : /* 35 */ "expr ::= ID",
1093 : /* 36 */ "expr ::= exprs",
1094 : /* 37 */ "expr ::= DOLLAR ID COLON ID",
1095 : /* 38 */ "expr ::= expr modifier modparameters",
1096 : /* 39 */ "exprs ::= value",
1097 : /* 40 */ "exprs ::= UNIMATH value",
1098 : /* 41 */ "exprs ::= exprs math value",
1099 : /* 42 */ "exprs ::= exprs ANDSYM value",
1100 : /* 43 */ "exprs ::= array",
1101 : /* 44 */ "math ::= UNIMATH",
1102 : /* 45 */ "math ::= MATH",
1103 : /* 46 */ "value ::= variable",
1104 : /* 47 */ "value ::= INTEGER",
1105 : /* 48 */ "value ::= INTEGER DOT INTEGER",
1106 : /* 49 */ "value ::= BOOLEAN",
1107 : /* 50 */ "value ::= NULL",
1108 : /* 51 */ "value ::= function",
1109 : /* 52 */ "value ::= OPENP expr CLOSEP",
1110 : /* 53 */ "value ::= SINGLEQUOTE text SINGLEQUOTE",
1111 : /* 54 */ "value ::= SINGLEQUOTE SINGLEQUOTE",
1112 : /* 55 */ "value ::= QUOTE doublequoted QUOTE",
1113 : /* 56 */ "value ::= QUOTE QUOTE",
1114 : /* 57 */ "value ::= ID DOUBLECOLON method",
1115 : /* 58 */ "value ::= ID DOUBLECOLON DOLLAR ID OPENP params CLOSEP",
1116 : /* 59 */ "value ::= ID DOUBLECOLON method objectchain",
1117 : /* 60 */ "value ::= ID DOUBLECOLON DOLLAR ID OPENP params CLOSEP objectchain",
1118 : /* 61 */ "value ::= ID DOUBLECOLON ID",
1119 : /* 62 */ "value ::= ID DOUBLECOLON DOLLAR ID arrayindex",
1120 : /* 63 */ "value ::= ID DOUBLECOLON DOLLAR ID arrayindex objectchain",
1121 : /* 64 */ "value ::= smartytag",
1122 : /* 65 */ "variable ::= varindexed",
1123 : /* 66 */ "variable ::= DOLLAR varvar AT ID",
1124 : /* 67 */ "variable ::= object",
1125 : /* 68 */ "variable ::= HATCH ID HATCH",
1126 : /* 69 */ "variable ::= HATCH variable HATCH",
1127 : /* 70 */ "varindexed ::= DOLLAR varvar arrayindex",
1128 : /* 71 */ "arrayindex ::= arrayindex indexdef",
1129 : /* 72 */ "arrayindex ::=",
1130 : /* 73 */ "indexdef ::= DOT ID",
1131 : /* 74 */ "indexdef ::= DOT INTEGER",
1132 : /* 75 */ "indexdef ::= DOT variable",
1133 : /* 76 */ "indexdef ::= DOT LDEL exprs RDEL",
1134 : /* 77 */ "indexdef ::= OPENB ID CLOSEB",
1135 : /* 78 */ "indexdef ::= OPENB exprs CLOSEB",
1136 : /* 79 */ "indexdef ::= OPENB CLOSEB",
1137 : /* 80 */ "varvar ::= varvarele",
1138 : /* 81 */ "varvar ::= varvar varvarele",
1139 : /* 82 */ "varvarele ::= ID",
1140 : /* 83 */ "varvarele ::= LDEL expr RDEL",
1141 : /* 84 */ "object ::= varindexed objectchain",
1142 : /* 85 */ "objectchain ::= objectelement",
1143 : /* 86 */ "objectchain ::= objectchain objectelement",
1144 : /* 87 */ "objectelement ::= PTR ID arrayindex",
1145 : /* 88 */ "objectelement ::= PTR variable arrayindex",
1146 : /* 89 */ "objectelement ::= PTR LDEL expr RDEL arrayindex",
1147 : /* 90 */ "objectelement ::= PTR ID LDEL expr RDEL arrayindex",
1148 : /* 91 */ "objectelement ::= PTR method",
1149 : /* 92 */ "function ::= ID OPENP params CLOSEP",
1150 : /* 93 */ "method ::= ID OPENP params CLOSEP",
1151 : /* 94 */ "params ::= expr COMMA params",
1152 : /* 95 */ "params ::= expr",
1153 : /* 96 */ "params ::=",
1154 : /* 97 */ "modifier ::= VERT AT ID",
1155 : /* 98 */ "modifier ::= VERT ID",
1156 : /* 99 */ "modparameters ::= modparameters modparameter",
1157 : /* 100 */ "modparameters ::=",
1158 : /* 101 */ "modparameter ::= COLON exprs",
1159 : /* 102 */ "modparameter ::= COLON ID",
1160 : /* 103 */ "ifexprs ::= ifexpr",
1161 : /* 104 */ "ifexprs ::= NOT ifexprs",
1162 : /* 105 */ "ifexprs ::= OPENP ifexprs CLOSEP",
1163 : /* 106 */ "ifexpr ::= expr",
1164 : /* 107 */ "ifexpr ::= expr ifcond expr",
1165 : /* 108 */ "ifexpr ::= expr ISIN array",
1166 : /* 109 */ "ifexpr ::= expr ISIN value",
1167 : /* 110 */ "ifexpr ::= ifexprs lop ifexprs",
1168 : /* 111 */ "ifexpr ::= ifexprs ISDIVBY ifexprs",
1169 : /* 112 */ "ifexpr ::= ifexprs ISNOTDIVBY ifexprs",
1170 : /* 113 */ "ifexpr ::= ifexprs ISEVEN",
1171 : /* 114 */ "ifexpr ::= ifexprs ISNOTEVEN",
1172 : /* 115 */ "ifexpr ::= ifexprs ISEVENBY ifexprs",
1173 : /* 116 */ "ifexpr ::= ifexprs ISNOTEVENBY ifexprs",
1174 : /* 117 */ "ifexpr ::= ifexprs ISODD",
1175 : /* 118 */ "ifexpr ::= ifexprs ISNOTODD",
1176 : /* 119 */ "ifexpr ::= ifexprs ISODDBY ifexprs",
1177 : /* 120 */ "ifexpr ::= ifexprs ISNOTODDBY ifexprs",
1178 : /* 121 */ "ifcond ::= EQUALS",
1179 : /* 122 */ "ifcond ::= NOTEQUALS",
1180 : /* 123 */ "ifcond ::= GREATERTHAN",
1181 : /* 124 */ "ifcond ::= LESSTHAN",
1182 : /* 125 */ "ifcond ::= GREATEREQUAL",
1183 : /* 126 */ "ifcond ::= LESSEQUAL",
1184 : /* 127 */ "ifcond ::= IDENTITY",
1185 : /* 128 */ "ifcond ::= NONEIDENTITY",
1186 : /* 129 */ "lop ::= LAND",
1187 : /* 130 */ "lop ::= LOR",
1188 : /* 131 */ "lop ::= LXOR",
1189 : /* 132 */ "array ::= OPENB arrayelements CLOSEB",
1190 : /* 133 */ "arrayelements ::= arrayelement",
1191 : /* 134 */ "arrayelements ::= arrayelements COMMA arrayelement",
1192 : /* 135 */ "arrayelements ::=",
1193 : /* 136 */ "arrayelement ::= expr APTR expr",
1194 : /* 137 */ "arrayelement ::= ID APTR expr",
1195 : /* 138 */ "arrayelement ::= expr",
1196 : /* 139 */ "doublequoted ::= doublequoted doublequotedcontent",
1197 : /* 140 */ "doublequoted ::= doublequotedcontent",
1198 : /* 141 */ "doublequotedcontent ::= BACKTICK ID BACKTICK",
1199 : /* 142 */ "doublequotedcontent ::= BACKTICK variable BACKTICK",
1200 : /* 143 */ "doublequotedcontent ::= DOLLAR ID",
1201 : /* 144 */ "doublequotedcontent ::= LDEL expr RDEL",
1202 : /* 145 */ "doublequotedcontent ::= smartytag",
1203 : /* 146 */ "doublequotedcontent ::= DOLLAR OTHER",
1204 : /* 147 */ "doublequotedcontent ::= LDEL OTHER",
1205 : /* 148 */ "doublequotedcontent ::= BACKTICK OTHER",
1206 : /* 149 */ "doublequotedcontent ::= OTHER",
1207 : /* 150 */ "text ::= text textelement",
1208 : /* 151 */ "text ::= textelement",
1209 : /* 152 */ "textelement ::= OTHER",
1210 : /* 153 */ "textelement ::= LDEL",
1211 : );
1212 :
1213 : /**
1214 : * This function returns the symbolic name associated with a token
1215 : * value.
1216 : * @param int
1217 : * @return string
1218 : */
1219 : function tokenName($tokenType)
1220 : {
1221 0 : if ($tokenType === 0) {
1222 0 : return 'End of Input';
1223 : }
1224 0 : if ($tokenType > 0 && $tokenType < count($this->yyTokenName)) {
1225 0 : return $this->yyTokenName[$tokenType];
1226 : } else {
1227 0 : return "Unknown";
1228 : }
1229 : }
1230 :
1231 : /**
1232 : * The following function deletes the value associated with a
1233 : * symbol. The symbol can be either a terminal or nonterminal.
1234 : * @param int the symbol code
1235 : * @param mixed the symbol's value
1236 : */
1237 : static function yy_destructor($yymajor, $yypminor)
1238 : {
1239 : switch ($yymajor) {
1240 : /* Here is inserted the actions which take place when a
1241 : ** terminal or non-terminal is destroyed. This can happen
1242 : ** when the symbol is popped from the stack during a
1243 : ** reduce or during error processing or when a parser is
1244 : ** being destroyed before it is finished parsing.
1245 : **
1246 : ** Note: during a reduce, the only symbols destroyed are those
1247 : ** which appear on the RHS of the rule, but which are not used
1248 : ** inside the C code.
1249 : */
1250 323 : default: break; /* If no destructor action specified: do nothing */
1251 323 : }
1252 323 : }
1253 :
1254 : /**
1255 : * Pop the parser's stack once.
1256 : *
1257 : * If there is a destructor routine associated with the token which
1258 : * is popped from the stack, then call it.
1259 : *
1260 : * Return the major token number for the symbol popped.
1261 : * @param TP_yyParser
1262 : * @return int
1263 : */
1264 : function yy_pop_parser_stack()
1265 : {
1266 323 : if (!count($this->yystack)) {
1267 0 : return;
1268 : }
1269 323 : $yytos = array_pop($this->yystack);
1270 323 : if (self::$yyTraceFILE && $this->yyidx >= 0) {
1271 0 : fwrite(self::$yyTraceFILE,
1272 0 : self::$yyTracePrompt . 'Popping ' . $this->yyTokenName[$yytos->major] .
1273 0 : "\n");
1274 0 : }
1275 323 : $yymajor = $yytos->major;
1276 323 : self::yy_destructor($yymajor, $yytos->minor);
1277 323 : $this->yyidx--;
1278 323 : return $yymajor;
1279 : }
1280 :
1281 : /**
1282 : * Deallocate and destroy a parser. Destructors are all called for
1283 : * all stack elements before shutting the parser down.
1284 : */
1285 : function __destruct()
1286 : {
1287 325 : while ($this->yyidx >= 0) {
1288 4 : $this->yy_pop_parser_stack();
1289 4 : }
1290 325 : if (is_resource(self::$yyTraceFILE)) {
1291 0 : fclose(self::$yyTraceFILE);
1292 0 : }
1293 325 : }
1294 :
1295 : /**
1296 : * Based on the current state and parser stack, get a list of all
1297 : * possible lookahead tokens
1298 : * @param int
1299 : * @return array
1300 : */
1301 : function yy_get_expected_tokens($token)
1302 : {
1303 1 : $state = $this->yystack[$this->yyidx]->stateno;
1304 1 : $expected = self::$yyExpectedTokens[$state];
1305 1 : if (in_array($token, self::$yyExpectedTokens[$state], true)) {
1306 0 : return $expected;
1307 : }
1308 1 : $stack = $this->yystack;
1309 1 : $yyidx = $this->yyidx;
1310 : do {
1311 1 : $yyact = $this->yy_find_shift_action($token);
1312 1 : if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
1313 : // reduce action
1314 0 : $done = 0;
1315 : do {
1316 0 : if ($done++ == 100) {
1317 0 : $this->yyidx = $yyidx;
1318 0 : $this->yystack = $stack;
1319 : // too much recursion prevents proper detection
1320 : // so give up
1321 0 : return array_unique($expected);
1322 : }
1323 0 : $yyruleno = $yyact - self::YYNSTATE;
1324 0 : $this->yyidx -= self::$yyRuleInfo[$yyruleno]['rhs'];
1325 0 : $nextstate = $this->yy_find_reduce_action(
1326 0 : $this->yystack[$this->yyidx]->stateno,
1327 0 : self::$yyRuleInfo[$yyruleno]['lhs']);
1328 0 : if (isset(self::$yyExpectedTokens[$nextstate])) {
1329 0 : $expected += self::$yyExpectedTokens[$nextstate];
1330 0 : if (in_array($token,
1331 0 : self::$yyExpectedTokens[$nextstate], true)) {
1332 0 : $this->yyidx = $yyidx;
1333 0 : $this->yystack = $stack;
1334 0 : return array_unique($expected);
1335 : }
1336 0 : }
1337 0 : if ($nextstate < self::YYNSTATE) {
1338 : // we need to shift a non-terminal
1339 0 : $this->yyidx++;
1340 0 : $x = new TP_yyStackEntry;
1341 0 : $x->stateno = $nextstate;
1342 0 : $x->major = self::$yyRuleInfo[$yyruleno]['lhs'];
1343 0 : $this->yystack[$this->yyidx] = $x;
1344 0 : continue 2;
1345 0 : } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
1346 0 : $this->yyidx = $yyidx;
1347 0 : $this->yystack = $stack;
1348 : // the last token was just ignored, we can't accept
1349 : // by ignoring input, this is in essence ignoring a
1350 : // syntax error!
1351 0 : return array_unique($expected);
1352 0 : } elseif ($nextstate === self::YY_NO_ACTION) {
1353 0 : $this->yyidx = $yyidx;
1354 0 : $this->yystack = $stack;
1355 : // input accepted, but not shifted (I guess)
1356 0 : return $expected;
1357 : } else {
1358 0 : $yyact = $nextstate;
1359 : }
1360 0 : } while (true);
1361 0 : }
1362 1 : break;
1363 0 : } while (true);
1364 1 : return array_unique($expected);
1365 : }
1366 :
1367 : /**
1368 : * Based on the parser state and current parser stack, determine whether
1369 : * the lookahead token is possible.
1370 : *
1371 : * The parser will convert the token value to an error token if not. This
1372 : * catches some unusual edge cases where the parser would fail.
1373 : * @param int
1374 : * @return bool
1375 : */
1376 : function yy_is_expected_token($token)
1377 : {
1378 336 : if ($token === 0) {
1379 330 : return true; // 0 is not part of this
1380 : }
1381 336 : $state = $this->yystack[$this->yyidx]->stateno;
1382 336 : if (in_array($token, self::$yyExpectedTokens[$state], true)) {
1383 324 : return true;
1384 : }
1385 331 : $stack = $this->yystack;
1386 331 : $yyidx = $this->yyidx;
1387 : do {
1388 331 : $yyact = $this->yy_find_shift_action($token);
1389 331 : if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
1390 : // reduce action
1391 330 : $done = 0;
1392 : do {
1393 330 : if ($done++ == 100) {
1394 0 : $this->yyidx = $yyidx;
1395 0 : $this->yystack = $stack;
1396 : // too much recursion prevents proper detection
1397 : // so give up
1398 0 : return true;
1399 : }
1400 330 : $yyruleno = $yyact - self::YYNSTATE;
1401 330 : $this->yyidx -= self::$yyRuleInfo[$yyruleno]['rhs'];
1402 330 : $nextstate = $this->yy_find_reduce_action(
1403 330 : $this->yystack[$this->yyidx]->stateno,
1404 330 : self::$yyRuleInfo[$yyruleno]['lhs']);
1405 330 : if (isset(self::$yyExpectedTokens[$nextstate]) &&
1406 330 : in_array($token, self::$yyExpectedTokens[$nextstate], true)) {
1407 318 : $this->yyidx = $yyidx;
1408 318 : $this->yystack = $stack;
1409 318 : return true;
1410 : }
1411 325 : if ($nextstate < self::YYNSTATE) {
1412 : // we need to shift a non-terminal
1413 325 : $this->yyidx++;
1414 325 : $x = new TP_yyStackEntry;
1415 325 : $x->stateno = $nextstate;
1416 325 : $x->major = self::$yyRuleInfo[$yyruleno]['lhs'];
1417 325 : $this->yystack[$this->yyidx] = $x;
1418 325 : continue 2;
1419 0 : } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
1420 0 : $this->yyidx = $yyidx;
1421 0 : $this->yystack = $stack;
1422 0 : if (!$token) {
1423 : // end of input: this is valid
1424 0 : return true;
1425 : }
1426 : // the last token was just ignored, we can't accept
1427 : // by ignoring input, this is in essence ignoring a
1428 : // syntax error!
1429 0 : return false;
1430 0 : } elseif ($nextstate === self::YY_NO_ACTION) {
1431 0 : $this->yyidx = $yyidx;
1432 0 : $this->yystack = $stack;
1433 : // input accepted, but not shifted (I guess)
1434 0 : return true;
1435 : } else {
1436 0 : $yyact = $nextstate;
1437 : }
1438 0 : } while (true);
1439 0 : }
1440 246 : break;
1441 0 : } while (true);
1442 246 : $this->yyidx = $yyidx;
1443 246 : $this->yystack = $stack;
1444 246 : return true;
1445 : }
1446 :
1447 : /**
1448 : * Find the appropriate action for a parser given the terminal
1449 : * look-ahead token iLookAhead.
1450 : *
1451 : * If the look-ahead token is YYNOCODE, then check to see if the action is
1452 : * independent of the look-ahead. If it is, return the action, otherwise
1453 : * return YY_NO_ACTION.
1454 : * @param int The look-ahead token
1455 : */
1456 : function yy_find_shift_action($iLookAhead)
1457 : {
1458 336 : $stateno = $this->yystack[$this->yyidx]->stateno;
1459 :
1460 : /* if ($this->yyidx < 0) return self::YY_NO_ACTION; */
1461 336 : if (!isset(self::$yy_shift_ofst[$stateno])) {
1462 : // no shift actions
1463 335 : return self::$yy_default[$stateno];
1464 : }
1465 336 : $i = self::$yy_shift_ofst[$stateno];
1466 336 : if ($i === self::YY_SHIFT_USE_DFLT) {
1467 16 : return self::$yy_default[$stateno];
1468 : }
1469 336 : if ($iLookAhead == self::YYNOCODE) {
1470 0 : return self::YY_NO_ACTION;
1471 : }
1472 336 : $i += $iLookAhead;
1473 336 : if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
1474 336 : self::$yy_lookahead[$i] != $iLookAhead) {
1475 336 : if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback)
1476 336 : && ($iFallback = self::$yyFallback[$iLookAhead]) != 0) {
1477 331 : if (self::$yyTraceFILE) {
1478 0 : fwrite(self::$yyTraceFILE, self::$yyTracePrompt . "FALLBACK " .
1479 0 : $this->yyTokenName[$iLookAhead] . " => " .
1480 0 : $this->yyTokenName[$iFallback] . "\n");
1481 0 : }
1482 331 : return $this->yy_find_shift_action($iFallback);
1483 : }
1484 336 : return self::$yy_default[$stateno];
1485 : } else {
1486 336 : return self::$yy_action[$i];
1487 : }
1488 : }
1489 :
1490 : /**
1491 : * Find the appropriate action for a parser given the non-terminal
1492 : * look-ahead token $iLookAhead.
1493 : *
1494 : * If the look-ahead token is self::YYNOCODE, then check to see if the action is
1495 : * independent of the look-ahead. If it is, return the action, otherwise
1496 : * return self::YY_NO_ACTION.
1497 : * @param int Current state number
1498 : * @param int The look-ahead token
1499 : */
1500 : function yy_find_reduce_action($stateno, $iLookAhead)
1501 : {
1502 : /* $stateno = $this->yystack[$this->yyidx]->stateno; */
1503 :
1504 335 : if (!isset(self::$yy_reduce_ofst[$stateno])) {
1505 0 : return self::$yy_default[$stateno];
1506 : }
1507 335 : $i = self::$yy_reduce_ofst[$stateno];
1508 335 : if ($i == self::YY_REDUCE_USE_DFLT) {
1509 0 : return self::$yy_default[$stateno];
1510 : }
1511 335 : if ($iLookAhead == self::YYNOCODE) {
1512 0 : return self::YY_NO_ACTION;
1513 : }
1514 335 : $i += $iLookAhead;
1515 335 : if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
1516 335 : self::$yy_lookahead[$i] != $iLookAhead) {
1517 0 : return self::$yy_default[$stateno];
1518 : } else {
1519 335 : return self::$yy_action[$i];
1520 : }
1521 : }
1522 :
1523 : /**
1524 : * Perform a shift action.
1525 : * @param int The new state to shift in
1526 : * @param int The major token to shift in
1527 : * @param mixed the minor token to shift in
1528 : */
1529 : function yy_shift($yyNewState, $yyMajor, $yypMinor)
1530 : {
1531 336 : $this->yyidx++;
1532 336 : if ($this->yyidx >= self::YYSTACKDEPTH) {
1533 0 : $this->yyidx--;
1534 0 : if (self::$yyTraceFILE) {
1535 0 : fprintf(self::$yyTraceFILE, "%sStack Overflow!\n", self::$yyTracePrompt);
1536 0 : }
1537 0 : while ($this->yyidx >= 0) {
1538 0 : $this->yy_pop_parser_stack();
1539 0 : }
1540 : /* Here code is inserted which will execute if the parser
1541 : ** stack ever overflows */
1542 0 : return;
1543 : }
1544 336 : $yytos = new TP_yyStackEntry;
1545 336 : $yytos->stateno = $yyNewState;
1546 336 : $yytos->major = $yyMajor;
1547 336 : $yytos->minor = $yypMinor;
1548 336 : array_push($this->yystack, $yytos);
1549 336 : if (self::$yyTraceFILE && $this->yyidx > 0) {
1550 0 : fprintf(self::$yyTraceFILE, "%sShift %d\n", self::$yyTracePrompt,
1551 0 : $yyNewState);
1552 0 : fprintf(self::$yyTraceFILE, "%sStack:", self::$yyTracePrompt);
1553 0 : for($i = 1; $i <= $this->yyidx; $i++) {
1554 0 : fprintf(self::$yyTraceFILE, " %s",
1555 0 : $this->yyTokenName[$this->yystack[$i]->major]);
1556 0 : }
1557 0 : fwrite(self::$yyTraceFILE,"\n");
1558 0 : }
1559 336 : }
1560 :
1561 : /**
1562 : * The following table contains information about every rule that
1563 : * is used during the reduce.
1564 : *
1565 : * <pre>
1566 : * array(
1567 : * array(
1568 : * int $lhs; Symbol on the left-hand side of the rule
1569 : * int $nrhs; Number of right-hand side symbols in the rule
1570 : * ),...
1571 : * );
1572 : * </pre>
1573 : */
1574 : static public $yyRuleInfo = array(
1575 : array( 'lhs' => 70, 'rhs' => 1 ),
1576 : array( 'lhs' => 71, 'rhs' => 1 ),
1577 : array( 'lhs' => 71, 'rhs' => 2 ),
1578 : array( 'lhs' => 72, 'rhs' => 1 ),
1579 : array( 'lhs' => 72, 'rhs' => 3 ),
1580 : array( 'lhs' => 72, 'rhs' => 3 ),
1581 : array( 'lhs' => 72, 'rhs' => 1 ),
1582 : array( 'lhs' => 72, 'rhs' => 1 ),
1583 : array( 'lhs' => 72, 'rhs' => 1 ),
1584 : array( 'lhs' => 72, 'rhs' => 3 ),
1585 : array( 'lhs' => 72, 'rhs' => 3 ),
1586 : array( 'lhs' => 72, 'rhs' => 1 ),
1587 : array( 'lhs' => 72, 'rhs' => 1 ),
1588 : array( 'lhs' => 72, 'rhs' => 1 ),
1589 : array( 'lhs' => 73, 'rhs' => 6 ),
1590 : array( 'lhs' => 73, 'rhs' => 4 ),
1591 : array( 'lhs' => 73, 'rhs' => 4 ),
1592 : array( 'lhs' => 73, 'rhs' => 6 ),
1593 : array( 'lhs' => 73, 'rhs' => 6 ),
1594 : array( 'lhs' => 73, 'rhs' => 4 ),
1595 : array( 'lhs' => 73, 'rhs' => 5 ),
1596 : array( 'lhs' => 73, 'rhs' => 5 ),
1597 : array( 'lhs' => 73, 'rhs' => 5 ),
1598 : array( 'lhs' => 73, 'rhs' => 11 ),
1599 : array( 'lhs' => 85, 'rhs' => 2 ),
1600 : array( 'lhs' => 85, 'rhs' => 1 ),
1601 : array( 'lhs' => 73, 'rhs' => 8 ),
1602 : array( 'lhs' => 73, 'rhs' => 8 ),
1603 : array( 'lhs' => 78, 'rhs' => 2 ),
1604 : array( 'lhs' => 78, 'rhs' => 1 ),
1605 : array( 'lhs' => 78, 'rhs' => 0 ),
1606 : array( 'lhs' => 88, 'rhs' => 4 ),
1607 : array( 'lhs' => 83, 'rhs' => 1 ),
1608 : array( 'lhs' => 83, 'rhs' => 3 ),
1609 : array( 'lhs' => 82, 'rhs' => 4 ),
1610 : array( 'lhs' => 77, 'rhs' => 1 ),
1611 : array( 'lhs' => 77, 'rhs' => 1 ),
1612 : array( 'lhs' => 77, 'rhs' => 4 ),
1613 : array( 'lhs' => 77, 'rhs' => 3 ),
1614 : array( 'lhs' => 89, 'rhs' => 1 ),
1615 : array( 'lhs' => 89, 'rhs' => 2 ),
1616 : array( 'lhs' => 89, 'rhs' => 3 ),
1617 : array( 'lhs' => 89, 'rhs' => 3 ),
1618 : array( 'lhs' => 89, 'rhs' => 1 ),
1619 : array( 'lhs' => 90, 'rhs' => 1 ),
1620 : array( 'lhs' => 90, 'rhs' => 1 ),
1621 : array( 'lhs' => 86, 'rhs' => 1 ),
1622 : array( 'lhs' => 86, 'rhs' => 1 ),
1623 : array( 'lhs' => 86, 'rhs' => 3 ),
1624 : array( 'lhs' => 86, 'rhs' => 1 ),
1625 : array( 'lhs' => 86, 'rhs' => 1 ),
1626 : array( 'lhs' => 86, 'rhs' => 1 ),
1627 : array( 'lhs' => 86, 'rhs' => 3 ),
1628 : array( 'lhs' => 86, 'rhs' => 3 ),
1629 : array( 'lhs' => 86, 'rhs' => 2 ),
1630 : array( 'lhs' => 86, 'rhs' => 3 ),
1631 : array( 'lhs' => 86, 'rhs' => 2 ),
1632 : array( 'lhs' => 86, 'rhs' => 3 ),
1633 : array( 'lhs' => 86, 'rhs' => 7 ),
1634 : array( 'lhs' => 86, 'rhs' => 4 ),
1635 : array( 'lhs' => 86, 'rhs' => 8 ),
1636 : array( 'lhs' => 86, 'rhs' => 3 ),
1637 : array( 'lhs' => 86, 'rhs' => 5 ),
1638 : array( 'lhs' => 86, 'rhs' => 6 ),
1639 : array( 'lhs' => 86, 'rhs' => 1 ),
1640 : array( 'lhs' => 75, 'rhs' => 1 ),
1641 : array( 'lhs' => 75, 'rhs' => 4 ),
1642 : array( 'lhs' => 75, 'rhs' => 1 ),
1643 : array( 'lhs' => 75, 'rhs' => 3 ),
1644 : array( 'lhs' => 75, 'rhs' => 3 ),
1645 : array( 'lhs' => 76, 'rhs' => 3 ),
1646 : array( 'lhs' => 96, 'rhs' => 2 ),
1647 : array( 'lhs' => 96, 'rhs' => 0 ),
1648 : array( 'lhs' => 98, 'rhs' => 2 ),
1649 : array( 'lhs' => 98, 'rhs' => 2 ),
1650 : array( 'lhs' => 98, 'rhs' => 2 ),
1651 : array( 'lhs' => 98, 'rhs' => 4 ),
1652 : array( 'lhs' => 98, 'rhs' => 3 ),
1653 : array( 'lhs' => 98, 'rhs' => 3 ),
1654 : array( 'lhs' => 98, 'rhs' => 2 ),
1655 : array( 'lhs' => 84, 'rhs' => 1 ),
1656 : array( 'lhs' => 84, 'rhs' => 2 ),
1657 : array( 'lhs' => 99, 'rhs' => 1 ),
1658 : array( 'lhs' => 99, 'rhs' => 3 ),
1659 : array( 'lhs' => 97, 'rhs' => 2 ),
1660 : array( 'lhs' => 95, 'rhs' => 1 ),
1661 : array( 'lhs' => 95, 'rhs' => 2 ),
1662 : array( 'lhs' => 100, 'rhs' => 3 ),
1663 : array( 'lhs' => 100, 'rhs' => 3 ),
1664 : array( 'lhs' => 100, 'rhs' => 5 ),
1665 : array( 'lhs' => 100, 'rhs' => 6 ),
1666 : array( 'lhs' => 100, 'rhs' => 2 ),
1667 : array( 'lhs' => 91, 'rhs' => 4 ),
1668 : array( 'lhs' => 93, 'rhs' => 4 ),
1669 : array( 'lhs' => 94, 'rhs' => 3 ),
1670 : array( 'lhs' => 94, 'rhs' => 1 ),
1671 : array( 'lhs' => 94, 'rhs' => 0 ),
1672 : array( 'lhs' => 79, 'rhs' => 3 ),
1673 : array( 'lhs' => 79, 'rhs' => 2 ),
1674 : array( 'lhs' => 80, 'rhs' => 2 ),
1675 : array( 'lhs' => 80, 'rhs' => 0 ),
1676 : array( 'lhs' => 101, 'rhs' => 2 ),
1677 : array( 'lhs' => 101, 'rhs' => 2 ),
1678 : array( 'lhs' => 81, 'rhs' => 1 ),
1679 : array( 'lhs' => 81, 'rhs' => 2 ),
1680 : array( 'lhs' => 81, 'rhs' => 3 ),
1681 : array( 'lhs' => 102, 'rhs' => 1 ),
1682 : array( 'lhs' => 102, 'rhs' => 3 ),
1683 : array( 'lhs' => 102, 'rhs' => 3 ),
1684 : array( 'lhs' => 102, 'rhs' => 3 ),
1685 : array( 'lhs' => 102, 'rhs' => 3 ),
1686 : array( 'lhs' => 102, 'rhs' => 3 ),
1687 : array( 'lhs' => 102, 'rhs' => 3 ),
1688 : array( 'lhs' => 102, 'rhs' => 2 ),
1689 : array( 'lhs' => 102, 'rhs' => 2 ),
1690 : array( 'lhs' => 102, 'rhs' => 3 ),
1691 : array( 'lhs' => 102, 'rhs' => 3 ),
1692 : array( 'lhs' => 102, 'rhs' => 2 ),
1693 : array( 'lhs' => 102, 'rhs' => 2 ),
1694 : array( 'lhs' => 102, 'rhs' => 3 ),
1695 : array( 'lhs' => 102, 'rhs' => 3 ),
1696 : array( 'lhs' => 103, 'rhs' => 1 ),
1697 : array( 'lhs' => 103, 'rhs' => 1 ),
1698 : array( 'lhs' => 103, 'rhs' => 1 ),
1699 : array( 'lhs' => 103, 'rhs' => 1 ),
1700 : array( 'lhs' => 103, 'rhs' => 1 ),
1701 : array( 'lhs' => 103, 'rhs' => 1 ),
1702 : array( 'lhs' => 103, 'rhs' => 1 ),
1703 : array( 'lhs' => 103, 'rhs' => 1 ),
1704 : array( 'lhs' => 104, 'rhs' => 1 ),
1705 : array( 'lhs' => 104, 'rhs' => 1 ),
1706 : array( 'lhs' => 104, 'rhs' => 1 ),
1707 : array( 'lhs' => 87, 'rhs' => 3 ),
1708 : array( 'lhs' => 105, 'rhs' => 1 ),
1709 : array( 'lhs' => 105, 'rhs' => 3 ),
1710 : array( 'lhs' => 105, 'rhs' => 0 ),
1711 : array( 'lhs' => 106, 'rhs' => 3 ),
1712 : array( 'lhs' => 106, 'rhs' => 3 ),
1713 : array( 'lhs' => 106, 'rhs' => 1 ),
1714 : array( 'lhs' => 92, 'rhs' => 2 ),
1715 : array( 'lhs' => 92, 'rhs' => 1 ),
1716 : array( 'lhs' => 107, 'rhs' => 3 ),
1717 : array( 'lhs' => 107, 'rhs' => 3 ),
1718 : array( 'lhs' => 107, 'rhs' => 2 ),
1719 : array( 'lhs' => 107, 'rhs' => 3 ),
1720 : array( 'lhs' => 107, 'rhs' => 1 ),
1721 : array( 'lhs' => 107, 'rhs' => 2 ),
1722 : array( 'lhs' => 107, 'rhs' => 2 ),
1723 : array( 'lhs' => 107, 'rhs' => 2 ),
1724 : array( 'lhs' => 107, 'rhs' => 1 ),
1725 : array( 'lhs' => 74, 'rhs' => 2 ),
1726 : array( 'lhs' => 74, 'rhs' => 1 ),
1727 : array( 'lhs' => 108, 'rhs' => 1 ),
1728 : array( 'lhs' => 108, 'rhs' => 1 ),
1729 : );
1730 :
1731 : /**
1732 : * The following table contains a mapping of reduce action to method name
1733 : * that handles the reduction.
1734 : *
1735 : * If a rule is not set, it has no handler.
1736 : */
1737 : static public $yyReduceMap = array(
1738 : 0 => 0,
1739 : 39 => 0,
1740 : 46 => 0,
1741 : 47 => 0,
1742 : 49 => 0,
1743 : 50 => 0,
1744 : 51 => 0,
1745 : 67 => 0,
1746 : 133 => 0,
1747 : 1 => 1,
1748 : 36 => 1,
1749 : 43 => 1,
1750 : 44 => 1,
1751 : 45 => 1,
1752 : 80 => 1,
1753 : 103 => 1,
1754 : 140 => 1,
1755 : 149 => 1,
1756 : 151 => 1,
1757 : 152 => 1,
1758 : 153 => 1,
1759 : 2 => 2,
1760 : 71 => 2,
1761 : 139 => 2,
1762 : 147 => 2,
1763 : 150 => 2,
1764 : 3 => 3,
1765 : 4 => 4,
1766 : 5 => 5,
1767 : 6 => 6,
1768 : 7 => 7,
1769 : 8 => 8,
1770 : 9 => 9,
1771 : 10 => 10,
1772 : 11 => 11,
1773 : 12 => 12,
1774 : 13 => 13,
1775 : 14 => 14,
1776 : 15 => 15,
1777 : 16 => 16,
1778 : 17 => 17,
1779 : 18 => 18,
1780 : 19 => 19,
1781 : 20 => 20,
1782 : 21 => 21,
1783 : 22 => 22,
1784 : 23 => 23,
1785 : 24 => 24,
1786 : 25 => 25,
1787 : 29 => 25,
1788 : 95 => 25,
1789 : 138 => 25,
1790 : 26 => 26,
1791 : 27 => 27,
1792 : 28 => 28,
1793 : 30 => 30,
1794 : 31 => 31,
1795 : 32 => 32,
1796 : 33 => 33,
1797 : 34 => 34,
1798 : 35 => 35,
1799 : 37 => 37,
1800 : 38 => 38,
1801 : 40 => 40,
1802 : 41 => 41,
1803 : 42 => 42,
1804 : 48 => 48,
1805 : 52 => 52,
1806 : 53 => 53,
1807 : 54 => 54,
1808 : 56 => 54,
1809 : 55 => 55,
1810 : 57 => 57,
1811 : 58 => 58,
1812 : 59 => 59,
1813 : 60 => 60,
1814 : 61 => 61,
1815 : 62 => 62,
1816 : 63 => 63,
1817 : 64 => 64,
1818 : 65 => 65,
1819 : 66 => 66,
1820 : 68 => 68,
1821 : 69 => 69,
1822 : 70 => 70,
1823 : 72 => 72,
1824 : 100 => 72,
1825 : 73 => 73,
1826 : 74 => 74,
1827 : 75 => 75,
1828 : 76 => 76,
1829 : 78 => 76,
1830 : 77 => 77,
1831 : 79 => 79,
1832 : 81 => 81,
1833 : 82 => 82,
1834 : 83 => 83,
1835 : 105 => 83,
1836 : 84 => 84,
1837 : 85 => 85,
1838 : 86 => 86,
1839 : 87 => 87,
1840 : 88 => 88,
1841 : 89 => 89,
1842 : 90 => 90,
1843 : 91 => 91,
1844 : 92 => 92,
1845 : 93 => 93,
1846 : 94 => 94,
1847 : 96 => 96,
1848 : 97 => 97,
1849 : 98 => 98,
1850 : 99 => 99,
1851 : 101 => 101,
1852 : 102 => 102,
1853 : 104 => 104,
1854 : 106 => 106,
1855 : 107 => 107,
1856 : 110 => 107,
1857 : 108 => 108,
1858 : 109 => 109,
1859 : 111 => 111,
1860 : 112 => 112,
1861 : 113 => 113,
1862 : 118 => 113,
1863 : 114 => 114,
1864 : 117 => 114,
1865 : 115 => 115,
1866 : 120 => 115,
1867 : 116 => 116,
1868 : 119 => 116,
1869 : 121 => 121,
1870 : 122 => 122,
1871 : 123 => 123,
1872 : 124 => 124,
1873 : 125 => 125,
1874 : 126 => 126,
1875 : 127 => 127,
1876 : 128 => 128,
1877 : 129 => 129,
1878 : 130 => 130,
1879 : 131 => 131,
1880 : 132 => 132,
1881 : 134 => 134,
1882 : 135 => 135,
1883 : 136 => 136,
1884 : 137 => 137,
1885 : 141 => 141,
1886 : 142 => 142,
1887 : 143 => 143,
1888 : 144 => 144,
1889 : 145 => 145,
1890 : 146 => 146,
1891 : 148 => 148,
1892 : );
1893 : /* Beginning here are the reduction cases. A typical example
1894 : ** follows:
1895 : ** #line <lineno> <grammarfile>
1896 : ** function yy_r0($yymsp){ ... } // User supplied code
1897 : ** #line <lineno> <thisfile>
1898 : */
1899 : #line 73 "internal.templateparser.y"
1900 330 : function yy_r0(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
1901 : #line 1906 "internal.templateparser.php"
1902 : #line 79 "internal.templateparser.y"
1903 331 : function yy_r1(){$this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
1904 : #line 1909 "internal.templateparser.php"
1905 : #line 81 "internal.templateparser.y"
1906 302 : function yy_r2(){$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
1907 : #line 1912 "internal.templateparser.php"
1908 : #line 87 "internal.templateparser.y"
1909 296 : function yy_r3(){if ($this->compiler->has_code) {
1910 296 : $tmp =''; foreach ($this->prefix_code as $code) {$tmp.=$code;} $this->prefix_code=array();
1911 296 : $this->_retvalue = $this->cacher->processNocacheCode($tmp.$this->yystack[$this->yyidx + 0]->minor, $this->compiler,$this->nocache,true);
1912 296 : } else { $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;} $this->nocache=false; }
1913 : #line 1918 "internal.templateparser.php"
1914 : #line 92 "internal.templateparser.y"
1915 8 : function yy_r4(){ preg_match('/\s*/',$this->yystack[$this->yyidx + -2]->minor,$s); $this->_retvalue = $s[0]; }
1916 : #line 1921 "internal.templateparser.php"
1917 : #line 95 "internal.templateparser.y"
1918 1 : function yy_r5(){preg_match('/\s*/',$this->yystack[$this->yyidx + -2]->minor,$s); preg_match('/\s*/',$this->yystack[$this->yyidx + 0]->minor,$s2); $this->_retvalue = $s[0].$this->cacher->processNocacheCode($this->yystack[$this->yyidx + -1]->minor.$s2[0], $this->compiler,false,false); }
1919 : #line 1924 "internal.templateparser.php"
1920 : #line 97 "internal.templateparser.y"
1921 0 : function yy_r6(){preg_match('/\s*/',$this->yystack[$this->yyidx + 0]->minor,$s); $this->_retvalue = $s[0].$this->cacher->processNocacheCode($this->smarty->left_delimiter, $this->compiler,false,false); }
1922 : #line 1927 "internal.templateparser.php"
1923 : #line 99 "internal.templateparser.y"
1924 0 : function yy_r7(){preg_match('/\s*/',$this->yystack[$this->yyidx + 0]->minor,$s); $this->_retvalue = $s[0].$this->cacher->processNocacheCode($this->smarty->right_delimiter, $this->compiler,false,false); }
1925 : #line 1930 "internal.templateparser.php"
1926 : #line 101 "internal.templateparser.y"
1927 5 : function yy_r8(){if (!$this->template->security) {
1928 2 : $this->_retvalue = $this->cacher->processNocacheCode($this->yystack[$this->yyidx + 0]->minor, $this->compiler, false,true);
1929 5 : } elseif ($this->smarty->security_policy->php_handling == SMARTY_PHP_QUOTE) {
1930 1 : $this->_retvalue = $this->cacher->processNocacheCode(htmlspecialchars($this->yystack[$this->yyidx + 0]->minor, ENT_QUOTES), $this->compiler, false, false);
1931 3 : }elseif ($this->smarty->security_policy->php_handling == SMARTY_PHP_PASSTHRU || $this->smarty->security_policy->php_handling == SMARTY_PHP_ALLOW) {
1932 1 : $this->_retvalue = $this->cacher->processNocacheCode("<?php echo '".$this->yystack[$this->yyidx + 0]->minor."';?>\n", $this->compiler, false, false);
1933 2 : }elseif ($this->smarty->security_policy->php_handling == SMARTY_PHP_REMOVE) {
1934 1 : $this->_retvalue = '';
1935 5 : } }
1936 : #line 1941 "internal.templateparser.php"
1937 : #line 111 "internal.templateparser.y"
1938 4 : function yy_r9(){preg_match('/\s*/',$this->yystack[$this->yyidx + -2]->minor,$s); $this->_retvalue = $s[0];
1939 4 : if (!$this->template->security) {
1940 1 : $this->_retvalue .= $this->cacher->processNocacheCode('<?php '.$this->yystack[$this->yyidx + -1]->minor.' ?>', $this->compiler, false,true);
1941 4 : } elseif ($this->smarty->security_policy->php_handling == SMARTY_PHP_QUOTE) {
1942 1 : $this->_retvalue .= $this->cacher->processNocacheCode(htmlspecialchars('<?php '.$this->yystack[$this->yyidx + -1]->minor.' ?>', ENT_QUOTES), $this->compiler, false, false);
1943 3 : }elseif ($this->smarty->security_policy->php_handling == SMARTY_PHP_PASSTHRU || $this->smarty->security_policy->php_handling == SMARTY_PHP_ALLOW) {
1944 1 : $this->_retvalue .= $this->cacher->processNocacheCode("<?php echo '<?php ".$this->yystack[$this->yyidx + -1]->minor." ?>';?>\n", $this->compiler, false, false);
1945 2 : }elseif ($this->smarty->security_policy->php_handling == SMARTY_PHP_REMOVE) {
1946 1 : $this->_retvalue .= '';
1947 4 : } }
1948 : #line 1953 "internal.templateparser.php"
1949 : #line 122 "internal.templateparser.y"
1950 1 : function yy_r10(){preg_match('/\s*/',$this->yystack[$this->yyidx + -2]->minor,$s); $this->_retvalue = $s[0];
1951 1 : if (!$this->template->security) {
1952 1 : $this->_retvalue .= $this->cacher->processNocacheCode($this->compiler->compileTag('print_expression',array('value'=>$this->yystack[$this->yyidx + -1]->minor)), $this->compiler, false,true);
1953 1 : } elseif ($this->smarty->security_policy->php_handling == SMARTY_PHP_QUOTE) {
1954 0 : $this->_retvalue .= $this->cacher->processNocacheCode(htmlspecialchars('<?php '.t.' ?>', ENT_QUOTES), $this->compiler, false, false);
1955 0 : }elseif ($this->smarty->security_policy->php_handling == SMARTY_PHP_PASSTHRU || $this->smarty->security_policy->php_handling == SMARTY_PHP_ALLOW) {
1956 0 : $this->_retvalue .= $this->cacher->processNocacheCode("<?php echo '<?php ".t." ?>';?>\n", $this->compiler, false, false);
1957 0 : }elseif ($this->smarty->security_policy->php_handling == SMARTY_PHP_REMOVE) {
1958 0 : $this->_retvalue .= '';
1959 1 : } }
1960 : #line 1965 "internal.templateparser.php"
1961 : #line 133 "internal.templateparser.y"
1962 3 : function yy_r11(){preg_match('/\s*/',$this->yystack[$this->yyidx + 0]->minor,$s); $this->_retvalue = $s[0].$this->cacher->processNocacheCode("<?php echo '<?xml';?>", $this->compiler, true, true); }
1963 : #line 1968 "internal.templateparser.php"
1964 : #line 134 "internal.templateparser.y"
1965 3 : function yy_r12(){$this->_retvalue = $this->cacher->processNocacheCode("<?php echo '?>';?>\n", $this->compiler, true, true); }
1966 : #line 1971 "internal.templateparser.php"
1967 : #line 136 "internal.templateparser.y"
1968 172 : function yy_r13(){$this->_retvalue = $this->cacher->processNocacheCode($this->yystack[$this->yyidx + 0]->minor, $this->compiler,false,false); }
1969 : #line 1974 "internal.templateparser.php"
1970 : #line 143 "internal.templateparser.y"
1971 46 : function yy_r14(){ preg_match('/\s*/',$this->yystack[$this->yyidx + -5]->minor,$s); $this->_retvalue = $s[0].$this->compiler->compileTag('assign',array_merge(array('value'=>$this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -4]->minor,$this->yystack[$this->yyidx + -1]->minor)); }
1972 : #line 1977 "internal.templateparser.php"
1973 : #line 145 "internal.templateparser.y"
1974 184 : function yy_r15(){ preg_match('/\s*/',$this->yystack[$this->yyidx + -3]->minor,$s); $this->_retvalue = $s[0].$this->compiler->compileTag('print_expression',array_merge(array('value'=>$this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -1]->minor)); }
1975 : #line 1980 "internal.templateparser.php"
1976 : #line 147 "internal.templateparser.y"
1977 192 : function yy_r16(){ preg_match('/\s*/',$this->yystack[$this->yyidx + -3]->minor,$s); $this->_retvalue = $s[0].$this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor,$this->yystack[$this->yyidx + -1]->minor); }
1978 : #line 1983 "internal.templateparser.php"
1979 : #line 149 "internal.templateparser.y"
1980 2 : function yy_r17(){ preg_match('/\s*/',$this->yystack[$this->yyidx + -5]->minor,$s); $this->_retvalue = $s[0].$this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor,array_merge(array('object_methode'=>$this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -1]->minor)); }
1981 : #line 1986 "internal.templateparser.php"
1982 : #line 151 "internal.templateparser.y"
1983 1 : function yy_r18(){ preg_match('/\s*/',$this->yystack[$this->yyidx + -5]->minor,$s); $this->_retvalue = $s[0].'<?php ob_start();?>'.$this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor,$this->yystack[$this->yyidx + -1]->minor).'<?php echo ';
1984 1 : if ($this->smarty->plugin_handler->loadSmartyPlugin($this->yystack[$this->yyidx + -3]->minor[0],'modifier')) {
1985 1 : $this->_retvalue .= "\$_smarty_tpl->smarty->plugin_handler->executeModifier('".$this->yystack[$this->yyidx + -3]->minor[0] . "',array(ob_get_clean()" . $this->yystack[$this->yyidx + -2]->minor. "),".$this->yystack[$this->yyidx + -3]->minor[1].");?>";
1986 1 : } else {
1987 0 : if (is_callable($this->yystack[$this->yyidx + -3]->minor[0])) {
1988 0 : if (!$this->template->security || $this->smarty->security_handler->isTrustedModifier($this->yystack[$this->yyidx + -3]->minor[0], $this->compiler)) {
1989 0 : $this->_retvalue .= "\$_smarty_tpl->smarty->plugin_handler->executeModifier('".$this->yystack[$this->yyidx + -3]->minor[0] . "',array(ob_get_clean()" . $this->yystack[$this->yyidx + -2]->minor. "),".$this->yystack[$this->yyidx + -3]->minor[1].");?>";
1990 0 : }
1991 0 : } else {
1992 0 : $this->compiler->trigger_template_error ("unknown modifier \"" . $this->yystack[$this->yyidx + -3]->minor[0] . "\"");
1993 : }
1994 : }
1995 1 : }
1996 : #line 2001 "internal.templateparser.php"
1997 : #line 165 "internal.templateparser.y"
1998 148 : function yy_r19(){ preg_match('/\s*/',$this->yystack[$this->yyidx + -3]->minor,$s); $this->_retvalue = $s[0].$this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor.'close',$this->yystack[$this->yyidx + -1]->minor); }
1999 : #line 2004 "internal.templateparser.php"
2000 : #line 167 "internal.templateparser.y"
2001 1 : function yy_r20(){ preg_match('/\s*/',$this->yystack[$this->yyidx + -4]->minor,$s); $this->_retvalue = $s[0].$this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor.'close',array('object_methode'=>$this->yystack[$this->yyidx + -1]->minor)); }
2002 : #line 2007 "internal.templateparser.php"
2003 : #line 169 "internal.templateparser.y"
2004 77 : function yy_r21(){if (!in_array($this->yystack[$this->yyidx + -3]->minor,array('if','elseif','while'))) {
2005 0 : $this->compiler->trigger_template_error ("wrong syntax for tag \"" . $this->yystack[$this->yyidx + -3]->minor . "\"");
2006 0 : }
2007 77 : preg_match('/\s*/',$this->yystack[$this->yyidx + -4]->minor,$s); $this->_retvalue = $s[0].$this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor,array('if condition'=>$this->yystack[$this->yyidx + -1]->minor)); }
2008 : #line 2013 "internal.templateparser.php"
2009 : #line 173 "internal.templateparser.y"
2010 3 : function yy_r22(){ if (!in_array($this->yystack[$this->yyidx + -3]->minor,array('if','elseif','while'))) {
2011 0 : $this->compiler->trigger_template_error ("wrong syntax for tag \"" . $this->yystack[$this->yyidx + -3]->minor . "\"");
2012 0 : }
2013 3 : preg_match('/\s*/',$this->yystack[$this->yyidx + -4]->minor,$s); $this->_retvalue = $s[0].$this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor,array('if condition'=>$this->yystack[$this->yyidx + -1]->minor)); }
2014 : #line 2019 "internal.templateparser.php"
2015 : #line 178 "internal.templateparser.y"
2016 : function yy_r23(){
2017 7 : if ($this->yystack[$this->yyidx + -9]->minor != 'for') {
2018 0 : $this->compiler->trigger_template_error ("wrong syntax for tag \"" . $this->yystack[$this->yyidx + -9]->minor . "\"");
2019 0 : }
2020 7 : preg_match('/\s*/',$this->yystack[$this->yyidx + -10]->minor,$s); $this->_retvalue = $s[0].$this->compiler->compileTag($this->yystack[$this->yyidx + -9]->minor,array('start'=>$this->yystack[$this->yyidx + -7]->minor,'ifexp'=>$this->yystack[$this->yyidx + -5]->minor,'varloop'=>$this->yystack[$this->yyidx + -2]->minor,'loop'=>$this->yystack[$this->yyidx + -1]->minor)); }
2021 : #line 2026 "internal.templateparser.php"
2022 : #line 183 "internal.templateparser.y"
2023 1 : function yy_r24(){ $this->_retvalue = '='.$this->yystack[$this->yyidx + 0]->minor; }
2024 : #line 2029 "internal.templateparser.php"
2025 : #line 184 "internal.templateparser.y"
2026 128 : function yy_r25(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
2027 : #line 2032 "internal.templateparser.php"
2028 : #line 186 "internal.templateparser.y"
2029 : function yy_r26(){
2030 16 : if ($this->yystack[$this->yyidx + -6]->minor != 'foreach') {
2031 0 : $this->compiler->trigger_template_error ("wrong syntax for tag \"" . $this->yystack[$this->yyidx + -6]->minor . "\"");
2032 0 : }
2033 16 : preg_match('/\s*/',$this->yystack[$this->yyidx + -7]->minor,$s); $this->_retvalue = $s[0].$this->compiler->compileTag($this->yystack[$this->yyidx + -6]->minor,array('from'=>$this->yystack[$this->yyidx + -4]->minor,'item'=>$this->yystack[$this->yyidx + -1]->minor)); }
2034 : #line 2039 "internal.templateparser.php"
2035 : #line 191 "internal.templateparser.y"
2036 : function yy_r27(){
2037 1 : if ($this->yystack[$this->yyidx + -6]->minor != 'foreach') {
2038 0 : $this->compiler->trigger_template_error ("wrong syntax for tag \"" . $this->yystack[$this->yyidx + -6]->minor . "\"");
2039 0 : }
2040 1 : preg_match('/\s*/',$this->yystack[$this->yyidx + -7]->minor,$s); $this->_retvalue = $s[0].$this->compiler->compileTag($this->yystack[$this->yyidx + -6]->minor,array('from'=>$this->yystack[$this->yyidx + -4]->minor,'item'=>$this->yystack[$this->yyidx + -1]->minor)); }
2041 : #line 2046 "internal.templateparser.php"
2042 : #line 201 "internal.templateparser.y"
2043 68 : function yy_r28(){ $this->_retvalue = array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor); }
2044 : #line 2049 "internal.templateparser.php"
2045 : #line 205 "internal.templateparser.y"
2046 273 : function yy_r30(){ $this->_retvalue = array(); }
2047 : #line 2052 "internal.templateparser.php"
2048 : #line 208 "internal.templateparser.y"
2049 109 : function yy_r31(){ $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>$this->yystack[$this->yyidx + 0]->minor); }
2050 : #line 2055 "internal.templateparser.php"
2051 : #line 213 "internal.templateparser.y"
2052 7 : function yy_r32(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor); }
2053 : #line 2058 "internal.templateparser.php"
2054 : #line 214 "internal.templateparser.y"
2055 1 : function yy_r33(){ $this->yystack[$this->yyidx + -2]->minor[]=$this->yystack[$this->yyidx + 0]->minor; $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor; }
2056 : #line 2061 "internal.templateparser.php"
2057 : #line 216 "internal.templateparser.y"
2058 10 : function yy_r34(){ $this->_retvalue = array('var' => $this->yystack[$this->yyidx + -2]->minor, 'value'=>$this->yystack[$this->yyidx + 0]->minor); }
2059 : #line 2064 "internal.templateparser.php"
2060 : #line 222 "internal.templateparser.y"
2061 72 : function yy_r35(){ $this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\''; }
2062 : #line 2067 "internal.templateparser.php"
2063 : #line 226 "internal.templateparser.y"
2064 1 : function yy_r37(){$this->_retvalue = '$_smarty_tpl->getStreamVariable(\''. $this->yystack[$this->yyidx + -2]->minor .'://'. $this->yystack[$this->yyidx + 0]->minor . '\')'; }
2065 : #line 2070 "internal.templateparser.php"
2066 : #line 227 "internal.templateparser.y"
2067 : function yy_r38(){
2068 15 : if ($this->smarty->plugin_handler->loadSmartyPlugin($this->yystack[$this->yyidx + -1]->minor[0],'modifier')) {
2069 7 : $this->_retvalue = "\$_smarty_tpl->smarty->plugin_handler->executeModifier('".$this->yystack[$this->yyidx + -1]->minor[0] . "',array(". $this->yystack[$this->yyidx + -2]->minor . $this->yystack[$this->yyidx + 0]->minor. "),".$this->yystack[$this->yyidx + -1]->minor[1].")";
2070 7 : } else {
2071 9 : if (is_callable($this->yystack[$this->yyidx + -1]->minor[0])) {
2072 8 : if (!$this->template->security || $this->smarty->security_handler->isTrustedModifier($this->yystack[$this->yyidx + -1]->minor[0], $this->compiler)) {
2073 7 : $this->_retvalue = "\$_smarty_tpl->smarty->plugin_handler->executeModifier('".$this->yystack[$this->yyidx + -1]->minor[0] . "',array(". $this->yystack[$this->yyidx + -2]->minor . $this->yystack[$this->yyidx + 0]->minor. "),".$this->yystack[$this->yyidx + -1]->minor[1].")";
2074 7 : }
2075 7 : } else {
2076 1 : $this->compiler->trigger_template_error ("unknown modifier \"" . $this->yystack[$this->yyidx + -1]->minor[0] . "\"");
2077 : }
2078 : }
2079 13 : }
2080 : #line 2085 "internal.templateparser.php"
2081 : #line 244 "internal.templateparser.y"
2082 1 : function yy_r40(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
2083 : #line 2088 "internal.templateparser.php"
2084 : #line 246 "internal.templateparser.y"
2085 12 : function yy_r41(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor . $this->yystack[$this->yyidx + -1]->minor . $this->yystack[$this->yyidx + 0]->minor; }
2086 : #line 2091 "internal.templateparser.php"
2087 : #line 248 "internal.templateparser.y"
2088 0 : function yy_r42(){ $this->_retvalue = '('. $this->yystack[$this->yyidx + -2]->minor . ').(' . $this->yystack[$this->yyidx + 0]->minor. ')'; }
2089 : #line 2094 "internal.templateparser.php"
2090 : #line 268 "internal.templateparser.y"
2091 0 : function yy_r48(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor; }
2092 : #line 2097 "internal.templateparser.php"
2093 : #line 276 "internal.templateparser.y"
2094 1 : function yy_r52(){ $this->_retvalue = "(". $this->yystack[$this->yyidx + -1]->minor .")"; }
2095 : #line 2100 "internal.templateparser.php"
2096 : #line 278 "internal.templateparser.y"
2097 65 : function yy_r53(){ $this->_retvalue = "'".$this->yystack[$this->yyidx + -1]->minor."'"; }
2098 : #line 2103 "internal.templateparser.php"
2099 : #line 279 "internal.templateparser.y"
2100 2 : function yy_r54(){ $this->_retvalue = "''"; }
2101 : #line 2106 "internal.templateparser.php"
2102 : #line 281 "internal.templateparser.y"
2103 44 : function yy_r55(){ $this->_retvalue = '"'.$this->yystack[$this->yyidx + -1]->minor.'"'; }
2104 : #line 2109 "internal.templateparser.php"
2105 : #line 284 "internal.templateparser.y"
2106 1 : function yy_r57(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'::'.$this->yystack[$this->yyidx + 0]->minor; }
2107 : #line 2112 "internal.templateparser.php"
2108 : #line 285 "internal.templateparser.y"
2109 2 : function yy_r58(){ $this->prefix_number++; $this->prefix_code[] = '<?php $_tmp'.$this->prefix_number.'=$_smarty_tpl->getVariable(\''. $this->yystack[$this->yyidx + -3]->minor .'\')->value;?>'; $this->_retvalue = $this->yystack[$this->yyidx + -6]->minor.'::$_tmp'.$this->prefix_number.'('. $this->yystack[$this->yyidx + -1]->minor .')'; }
2110 : #line 2115 "internal.templateparser.php"
2111 : #line 287 "internal.templateparser.y"
2112 0 : function yy_r59(){ $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor.'::'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
2113 : #line 2118 "internal.templateparser.php"
2114 : #line 288 "internal.templateparser.y"
2115 0 : function yy_r60(){ $this->prefix_number++; $this->prefix_code[] = '<?php $_tmp'.$this->prefix_number.'=$_smarty_tpl->getVariable(\''. $this->yystack[$this->yyidx + -4]->minor .'\')->value;?>'; $this->_retvalue = $this->yystack[$this->yyidx + -7]->minor.'::$_tmp'.$this->prefix_number.'('. $this->yystack[$this->yyidx + -2]->minor .')'.$this->yystack[$this->yyidx + 0]->minor; }
2116 : #line 2121 "internal.templateparser.php"
2117 : #line 290 "internal.templateparser.y"
2118 1 : function yy_r61(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'::'.$this->yystack[$this->yyidx + 0]->minor; }
2119 : #line 2124 "internal.templateparser.php"
2120 : #line 292 "internal.templateparser.y"
2121 1 : function yy_r62(){ $this->_retvalue = $this->yystack[$this->yyidx + -4]->minor.'::$'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
2122 : #line 2127 "internal.templateparser.php"
2123 : #line 294 "internal.templateparser.y"
2124 0 : function yy_r63(){ $this->_retvalue = $this->yystack[$this->yyidx + -5]->minor.'::$'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
2125 : #line 2130 "internal.templateparser.php"
2126 : #line 296 "internal.templateparser.y"
2127 0 : function yy_r64(){ $this->prefix_number++; $this->prefix_code[] = '<?php ob_start();?>'.$this->yystack[$this->yyidx + 0]->minor.'<?php $_tmp'.$this->prefix_number.'=ob_get_clean();?>'; $this->_retvalue = '$_tmp'.$this->prefix_number; }
2128 : #line 2133 "internal.templateparser.php"
2129 : #line 302 "internal.templateparser.y"
2130 166 : function yy_r65(){if ($this->yystack[$this->yyidx + 0]->minor['var'] == '\'smarty\'') { $this->_retvalue = $this->compiler->compileTag('internal_smarty_var',$this->yystack[$this->yyidx + 0]->minor['index']);} else {
2131 166 : $this->_retvalue = '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + 0]->minor['var'] .')->value'.$this->yystack[$this->yyidx + 0]->minor['index']; $this->nocache=$this->template->getVariable(trim($this->yystack[$this->yyidx + 0]->minor['var'],"'"))->nocache;} }
2132 : #line 2137 "internal.templateparser.php"
2133 : #line 305 "internal.templateparser.y"
2134 10 : function yy_r66(){ $this->_retvalue = '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + -2]->minor .')->'.$this->yystack[$this->yyidx + 0]->minor; $this->nocache=$this->template->getVariable(trim($this->yystack[$this->yyidx + -2]->minor,"'"))->nocache; }
2135 : #line 2140 "internal.templateparser.php"
2136 : #line 309 "internal.templateparser.y"
2137 12 : function yy_r68(){$this->_retvalue = '$_smarty_tpl->getConfigVariable(\''. $this->yystack[$this->yyidx + -1]->minor .'\')'; }
2138 : #line 2143 "internal.templateparser.php"
2139 : #line 310 "internal.templateparser.y"
2140 0 : function yy_r69(){$this->_retvalue = '$_smarty_tpl->getConfigVariable('. $this->yystack[$this->yyidx + -1]->minor .')'; }
2141 : #line 2146 "internal.templateparser.php"
2142 : #line 313 "internal.templateparser.y"
2143 167 : function yy_r70(){$this->_retvalue = array('var'=>$this->yystack[$this->yyidx + -1]->minor, 'index'=>$this->yystack[$this->yyidx + 0]->minor); }
2144 : #line 2149 "internal.templateparser.php"
2145 : #line 321 "internal.templateparser.y"
2146 174 : function yy_r72(){return; }
2147 : #line 2152 "internal.templateparser.php"
2148 : #line 325 "internal.templateparser.y"
2149 10 : function yy_r73(){ $this->_retvalue = "['". $this->yystack[$this->yyidx + 0]->minor ."']"; }
2150 : #line 2155 "internal.templateparser.php"
2151 : #line 326 "internal.templateparser.y"
2152 1 : function yy_r74(){ $this->_retvalue = "[". $this->yystack[$this->yyidx + 0]->minor ."]"; }
2153 : #line 2158 "internal.templateparser.php"
2154 : #line 327 "internal.templateparser.y"
2155 0 : function yy_r75(){ $this->_retvalue = "[".$this->yystack[$this->yyidx + 0]->minor."]"; }
2156 : #line 2161 "internal.templateparser.php"
2157 : #line 328 "internal.templateparser.y"
2158 13 : function yy_r76(){ $this->_retvalue = "[". $this->yystack[$this->yyidx + -1]->minor ."]"; }
2159 : #line 2164 "internal.templateparser.php"
2160 : #line 330 "internal.templateparser.y"
2161 5 : function yy_r77(){ $this->_retvalue = '['.$this->compiler->compileTag('internal_smarty_var','[\'section\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\'][\'index\']').']'; }
2162 : #line 2167 "internal.templateparser.php"
2163 : #line 334 "internal.templateparser.y"
2164 3 : function yy_r79(){$this->_retvalue = ''; }
2165 : #line 2170 "internal.templateparser.php"
2166 : #line 342 "internal.templateparser.y"
2167 3 : function yy_r81(){$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor; }
2168 : #line 2173 "internal.templateparser.php"
2169 : #line 344 "internal.templateparser.y"
2170 169 : function yy_r82(){$this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\''; }
2171 : #line 2176 "internal.templateparser.php"
2172 : #line 346 "internal.templateparser.y"
2173 8 : function yy_r83(){$this->_retvalue = '('.$this->yystack[$this->yyidx + -1]->minor.')'; }
2174 : #line 2179 "internal.templateparser.php"
2175 : #line 351 "internal.templateparser.y"
2176 0 : function yy_r84(){ if ($this->yystack[$this->yyidx + -1]->minor['var'] == '\'smarty\'') { $this->_retvalue = $this->compiler->compileTag('internal_smarty_var',$this->yystack[$this->yyidx + -1]->minor['index']).$this->yystack[$this->yyidx + 0]->minor;} else {
2177 0 : $this->_retvalue = '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + -1]->minor['var'] .')->value'.$this->yystack[$this->yyidx + -1]->minor['index'].$this->yystack[$this->yyidx + 0]->minor; $this->nocache=$this->template->getVariable(trim($this->yystack[$this->yyidx + -1]->minor['var'],"'"))->nocache;} }
2178 : #line 2183 "internal.templateparser.php"
2179 : #line 354 "internal.templateparser.y"
2180 0 : function yy_r85(){$this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
2181 : #line 2186 "internal.templateparser.php"
2182 : #line 356 "internal.templateparser.y"
2183 0 : function yy_r86(){$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
2184 : #line 2189 "internal.templateparser.php"
2185 : #line 358 "internal.templateparser.y"
2186 0 : function yy_r87(){ $this->_retvalue = '->'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
2187 : #line 2192 "internal.templateparser.php"
2188 : #line 359 "internal.templateparser.y"
2189 0 : function yy_r88(){ $this->_retvalue = '->{'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor.'}'; }
2190 : #line 2195 "internal.templateparser.php"
2191 : #line 360 "internal.templateparser.y"
2192 0 : function yy_r89(){ $this->_retvalue = '->{'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}'; }
2193 : #line 2198 "internal.templateparser.php"
2194 : #line 361 "internal.templateparser.y"
2195 0 : function yy_r90(){ $this->_retvalue = '->{\''.$this->yystack[$this->yyidx + -4]->minor.'\'.'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}'; }
2196 : #line 2201 "internal.templateparser.php"
2197 : #line 363 "internal.templateparser.y"
2198 0 : function yy_r91(){ $this->_retvalue = '->'.$this->yystack[$this->yyidx + 0]->minor; }
2199 : #line 2204 "internal.templateparser.php"
2200 : #line 369 "internal.templateparser.y"
2201 10 : function yy_r92(){if (!$this->template->security || $this->smarty->security_handler->isTrustedPhpFunction($this->yystack[$this->yyidx + -3]->minor, $this->compiler)) {
2202 8 : if ($this->yystack[$this->yyidx + -3]->minor == 'isset' || $this->yystack[$this->yyidx + -3]->minor == 'empty' || $this->yystack[$this->yyidx + -3]->minor == 'array' || is_callable($this->yystack[$this->yyidx + -3]->minor)) {
2203 8 : $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . "(". $this->yystack[$this->yyidx + -1]->minor .")";
2204 8 : } else {
2205 0 : $this->compiler->trigger_template_error ("unknown function \"" . $this->yystack[$this->yyidx + -3]->minor . "\"");
2206 : }
2207 8 : } }
2208 : #line 2213 "internal.templateparser.php"
2209 : #line 380 "internal.templateparser.y"
2210 1 : function yy_r93(){ $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . "(". $this->yystack[$this->yyidx + -1]->minor .")"; }
2211 : #line 2216 "internal.templateparser.php"
2212 : #line 384 "internal.templateparser.y"
2213 0 : function yy_r94(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.",".$this->yystack[$this->yyidx + 0]->minor; }
2214 : #line 2219 "internal.templateparser.php"
2215 : #line 388 "internal.templateparser.y"
2216 1 : function yy_r96(){ return; }
2217 : #line 2222 "internal.templateparser.php"
2218 : #line 393 "internal.templateparser.y"
2219 3 : function yy_r97(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor,'false'); }
2220 : #line 2225 "internal.templateparser.php"
2221 : #line 394 "internal.templateparser.y"
2222 13 : function yy_r98(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor,'true'); }
2223 : #line 2228 "internal.templateparser.php"
2224 : #line 401 "internal.templateparser.y"
2225 8 : function yy_r99(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
2226 : #line 2231 "internal.templateparser.php"
2227 : #line 405 "internal.templateparser.y"
2228 7 : function yy_r101(){$this->_retvalue = ','.$this->yystack[$this->yyidx + 0]->minor; }
2229 : #line 2234 "internal.templateparser.php"
2230 : #line 406 "internal.templateparser.y"
2231 1 : function yy_r102(){$this->_retvalue = ',\''.$this->yystack[$this->yyidx + 0]->minor.'\''; }
2232 : #line 2237 "internal.templateparser.php"
2233 : #line 413 "internal.templateparser.y"
2234 2 : function yy_r104(){$this->_retvalue = '!'.$this->yystack[$this->yyidx + 0]->minor; }
2235 : #line 2240 "internal.templateparser.php"
2236 : #line 418 "internal.templateparser.y"
2237 24 : function yy_r106(){$this->_retvalue =$this->yystack[$this->yyidx + 0]->minor; }
2238 : #line 2243 "internal.templateparser.php"
2239 : #line 419 "internal.templateparser.y"
2240 61 : function yy_r107(){$this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
2241 : #line 2246 "internal.templateparser.php"
2242 : #line 420 "internal.templateparser.y"
2243 0 : function yy_r108(){$this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor.')'; }
2244 : #line 2249 "internal.templateparser.php"
2245 : #line 421 "internal.templateparser.y"
2246 0 : function yy_r109(){$this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.',(array)'.$this->yystack[$this->yyidx + 0]->minor.')'; }
2247 : #line 2252 "internal.templateparser.php"
2248 : #line 423 "internal.templateparser.y"
2249 1 : function yy_r111(){$this->_retvalue = '!('.$this->yystack[$this->yyidx + -2]->minor.' % '.$this->yystack[$this->yyidx + 0]->minor.')'; }
2250 : #line 2255 "internal.templateparser.php"
2251 : #line 424 "internal.templateparser.y"
2252 1 : function yy_r112(){$this->_retvalue = '('.$this->yystack[$this->yyidx + -2]->minor.' % '.$this->yystack[$this->yyidx + 0]->minor.')'; }
2253 : #line 2258 "internal.templateparser.php"
2254 : #line 425 "internal.templateparser.y"
2255 2 : function yy_r113(){$this->_retvalue = '!(1 & '.$this->yystack[$this->yyidx + -1]->minor.')'; }
2256 : #line 2261 "internal.templateparser.php"
2257 : #line 426 "internal.templateparser.y"
2258 2 : function yy_r114(){$this->_retvalue = '(1 & '.$this->yystack[$this->yyidx + -1]->minor.')'; }
2259 : #line 2264 "internal.templateparser.php"
2260 : #line 427 "internal.templateparser.y"
2261 1 : function yy_r115(){$this->_retvalue = '!(1 & '.$this->yystack[$this->yyidx + -2]->minor.' / '.$this->yystack[$this->yyidx + 0]->minor.')'; }
2262 : #line 2267 "internal.templateparser.php"
2263 : #line 428 "internal.templateparser.y"
2264 3 : function yy_r116(){$this->_retvalue = '(1 & '.$this->yystack[$this->yyidx + -2]->minor.' / '.$this->yystack[$this->yyidx + 0]->minor.')'; }
2265 : #line 2270 "internal.templateparser.php"
2266 : #line 434 "internal.templateparser.y"
2267 7 : function yy_r121(){$this->_retvalue = '=='; }
2268 : #line 2273 "internal.templateparser.php"
2269 : #line 435 "internal.templateparser.y"
2270 4 : function yy_r122(){$this->_retvalue = '!='; }
2271 : #line 2276 "internal.templateparser.php"
2272 : #line 436 "internal.templateparser.y"
2273 13 : function yy_r123(){$this->_retvalue = '>'; }
2274 : #line 2279 "internal.templateparser.php"
2275 : #line 437 "internal.templateparser.y"
2276 26 : function yy_r124(){$this->_retvalue = '<'; }
2277 : #line 2282 "internal.templateparser.php"
2278 : #line 438 "internal.templateparser.y"
2279 7 : function yy_r125(){$this->_retvalue = '>='; }
2280 : #line 2285 "internal.templateparser.php"
2281 : #line 439 "internal.templateparser.y"
2282 4 : function yy_r126(){$this->_retvalue = '<='; }
2283 : #line 2288 "internal.templateparser.php"
2284 : #line 440 "internal.templateparser.y"
2285 5 : function yy_r127(){$this->_retvalue = '==='; }
2286 : #line 2291 "internal.templateparser.php"
2287 : #line 441 "internal.templateparser.y"
2288 2 : function yy_r128(){$this->_retvalue = '!=='; }
2289 : #line 2294 "internal.templateparser.php"
2290 : #line 443 "internal.templateparser.y"
2291 5 : function yy_r129(){$this->_retvalue = '&&'; }
2292 : #line 2297 "internal.templateparser.php"
2293 : #line 444 "internal.templateparser.y"
2294 5 : function yy_r130(){$this->_retvalue = '||'; }
2295 : #line 2300 "internal.templateparser.php"
2296 : #line 445 "internal.templateparser.y"
2297 0 : function yy_r131(){$this->_retvalue = ' XOR '; }
2298 : #line 2303 "internal.templateparser.php"
2299 : #line 450 "internal.templateparser.y"
2300 32 : function yy_r132(){ $this->_retvalue = 'array('.$this->yystack[$this->yyidx + -1]->minor.')'; }
2301 : #line 2306 "internal.templateparser.php"
2302 : #line 452 "internal.templateparser.y"
2303 32 : function yy_r134(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor; }
2304 : #line 2309 "internal.templateparser.php"
2305 : #line 453 "internal.templateparser.y"
2306 0 : function yy_r135(){ return; }
2307 : #line 2312 "internal.templateparser.php"
2308 : #line 454 "internal.templateparser.y"
2309 3 : function yy_r136(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'=>'.$this->yystack[$this->yyidx + 0]->minor; }
2310 : #line 2315 "internal.templateparser.php"
2311 : #line 455 "internal.templateparser.y"
2312 1 : function yy_r137(){ $this->_retvalue = '\''.$this->yystack[$this->yyidx + -2]->minor.'\'=>'.$this->yystack[$this->yyidx + 0]->minor; }
2313 : #line 2318 "internal.templateparser.php"
2314 : #line 463 "internal.templateparser.y"
2315 0 : function yy_r141(){$this->_retvalue = "`".$this->yystack[$this->yyidx + -1]->minor."`"; }
2316 : #line 2321 "internal.templateparser.php"
2317 : #line 464 "internal.templateparser.y"
2318 1 : function yy_r142(){$this->_retvalue = '".'.$this->yystack[$this->yyidx + -1]->minor.'."'; }
2319 : #line 2324 "internal.templateparser.php"
2320 : #line 465 "internal.templateparser.y"
2321 1 : function yy_r143(){$this->_retvalue = '".'.'$_smarty_tpl->getVariable(\''. $this->yystack[$this->yyidx + 0]->minor .'\')->value'.'."'; $this->nocache=$this->template->getVariable(trim($this->yystack[$this->yyidx + 0]->minor,"'"))->nocache; }
2322 : #line 2327 "internal.templateparser.php"
2323 : #line 466 "internal.templateparser.y"
2324 2 : function yy_r144(){preg_match('/\s*/',$this->yystack[$this->yyidx + -2]->minor,$s); $this->_retvalue = $s[0].'".('.$this->yystack[$this->yyidx + -1]->minor.')."'; }
2325 : #line 2330 "internal.templateparser.php"
2326 : #line 467 "internal.templateparser.y"
2327 0 : function yy_r145(){ $this->prefix_number++; $this->prefix_code[] = '<?php ob_start();?>'.$this->yystack[$this->yyidx + 0]->minor.'<?php $_tmp'.$this->prefix_number.'=ob_get_clean();?>'; $this->_retvalue = '".$_tmp'.$this->prefix_number.'."'; }
2328 : #line 2333 "internal.templateparser.php"
2329 : #line 468 "internal.templateparser.y"
2330 0 : function yy_r146(){$this->_retvalue = '$'.$this->yystack[$this->yyidx + 0]->minor; }
2331 : #line 2336 "internal.templateparser.php"
2332 : #line 470 "internal.templateparser.y"
2333 0 : function yy_r148(){$this->_retvalue = '`'.$this->yystack[$this->yyidx + 0]->minor; }
2334 : #line 2339 "internal.templateparser.php"
2335 :
2336 : /**
2337 : * placeholder for the left hand side in a reduce operation.
2338 : *
2339 : * For a parser with a rule like this:
2340 : * <pre>
2341 : * rule(A) ::= B. { A = 1; }
2342 : * </pre>
2343 : *
2344 : * The parser will translate to something like:
2345 : *
2346 : * <code>
2347 : * function yy_r0(){$this->_retvalue = 1;}
2348 : * </code>
2349 : */
2350 : private $_retvalue;
2351 :
2352 : /**
2353 : * Perform a reduce action and the shift that must immediately
2354 : * follow the reduce.
2355 : *
2356 : * For a rule such as:
2357 : *
2358 : * <pre>
2359 : * A ::= B blah C. { dosomething(); }
2360 : * </pre>
2361 : *
2362 : * This function will first call the action, if any, ("dosomething();" in our
2363 : * example), and then it will pop three states from the stack,
2364 : * one for each entry on the right-hand side of the expression
2365 : * (B, blah, and C in our example rule), and then push the result of the action
2366 : * back on to the stack with the resulting state reduced to (as described in the .out
2367 : * file)
2368 : * @param int Number of the rule by which to reduce
2369 : */
2370 : function yy_reduce($yyruleno)
2371 : {
2372 : //int $yygoto; /* The next state */
2373 : //int $yyact; /* The next action */
2374 : //mixed $yygotominor; /* The LHS of the rule reduced */
2375 : //TP_yyStackEntry $yymsp; /* The top of the parser's stack */
2376 : //int $yysize; /* Amount to pop the stack */
2377 335 : $yymsp = $this->yystack[$this->yyidx];
2378 335 : if (self::$yyTraceFILE && $yyruleno >= 0
2379 335 : && $yyruleno < count(self::$yyRuleName)) {
2380 0 : fprintf(self::$yyTraceFILE, "%sReduce (%d) [%s].\n",
2381 0 : self::$yyTracePrompt, $yyruleno,
2382 0 : self::$yyRuleName[$yyruleno]);
2383 0 : }
2384 :
2385 335 : $this->_retvalue = $yy_lefthand_side = null;
2386 335 : if (array_key_exists($yyruleno, self::$yyReduceMap)) {
2387 : // call the action
2388 335 : $this->_retvalue = null;
2389 335 : $this->{'yy_r' . self::$yyReduceMap[$yyruleno]}();
2390 335 : $yy_lefthand_side = $this->_retvalue;
2391 335 : }
2392 335 : $yygoto = self::$yyRuleInfo[$yyruleno]['lhs'];
2393 335 : $yysize = self::$yyRuleInfo[$yyruleno]['rhs'];
2394 335 : $this->yyidx -= $yysize;
2395 335 : for($i = $yysize; $i; $i--) {
2396 : // pop all of the right-hand side parameters
2397 331 : array_pop($this->yystack);
2398 331 : }
2399 335 : $yyact = $this->yy_find_reduce_action($this->yystack[$this->yyidx]->stateno, $yygoto);
2400 335 : if ($yyact < self::YYNSTATE) {
2401 : /* If we are not debugging and the reduce action popped at least
2402 : ** one element off the stack, then we can push the new element back
2403 : ** onto the stack here, and skip the stack overflow test in yy_shift().
2404 : ** That gives a significant speed improvement. */
2405 335 : if (!self::$yyTraceFILE && $yysize) {
2406 331 : $this->yyidx++;
2407 331 : $x = new TP_yyStackEntry;
2408 331 : $x->stateno = $yyact;
2409 331 : $x->major = $yygoto;
2410 331 : $x->minor = $yy_lefthand_side;
2411 331 : $this->yystack[$this->yyidx] = $x;
2412 331 : } else {
2413 279 : $this->yy_shift($yyact, $yygoto, $yy_lefthand_side);
2414 : }
2415 335 : } elseif ($yyact == self::YYNSTATE + self::YYNRULE + 1) {
2416 322 : $this->yy_accept();
2417 322 : }
2418 335 : }
2419 :
2420 : /**
2421 : * The following code executes when the parse fails
2422 : *
2423 : * Code from %parse_fail is inserted here
2424 : */
2425 : function yy_parse_failed()
2426 : {
2427 0 : if (self::$yyTraceFILE) {
2428 0 : fprintf(self::$yyTraceFILE, "%sFail!\n", self::$yyTracePrompt);
2429 0 : }
2430 0 : while ($this->yyidx >= 0) {
2431 0 : $this->yy_pop_parser_stack();
2432 0 : }
2433 : /* Here code is inserted which will be executed whenever the
2434 : ** parser fails */
2435 0 : }
2436 :
2437 : /**
2438 : * The following code executes when a syntax error first occurs.
2439 : *
2440 : * %syntax_error code is inserted here
2441 : * @param int The major type of the error token
2442 : * @param mixed The minor type of the error token
2443 : */
2444 : function yy_syntax_error($yymajor, $TOKEN)
2445 : {
2446 : #line 55 "internal.templateparser.y"
2447 :
2448 1 : $this->internalError = true;
2449 1 : $this->yymajor = $yymajor;
2450 1 : $this->compiler->trigger_template_error();
2451 : #line 2457 "internal.templateparser.php"
2452 0 : }
2453 :
2454 : /**
2455 : * The following is executed when the parser accepts
2456 : *
2457 : * %parse_accept code is inserted here
2458 : */
2459 : function yy_accept()
2460 : {
2461 322 : if (self::$yyTraceFILE) {
2462 0 : fprintf(self::$yyTraceFILE, "%sAccept!\n", self::$yyTracePrompt);
2463 0 : }
2464 322 : while ($this->yyidx >= 0) {
2465 322 : $stack = $this->yy_pop_parser_stack();
2466 322 : }
2467 : /* Here code is inserted which will be executed whenever the
2468 : ** parser accepts */
2469 : #line 47 "internal.templateparser.y"
2470 :
2471 322 : $this->successful = !$this->internalError;
2472 322 : $this->internalError = false;
2473 322 : $this->retvalue = $this->_retvalue;
2474 : //echo $this->retvalue."\n\n";
2475 : #line 2482 "internal.templateparser.php"
2476 322 : }
2477 :
2478 : /**
2479 : * The main parser program.
2480 : *
2481 : * The first argument is the major token number. The second is
2482 : * the token value string as scanned from the input.
2483 : *
2484 : * @param int the token number
2485 : * @param mixed the token value
2486 : * @param mixed any extra arguments that should be passed to handlers
2487 : */
2488 : function doParse($yymajor, $yytokenvalue)
2489 : {
2490 : // $yyact; /* The parser action. */
2491 : // $yyendofinput; /* True if we are at the end of input */
2492 336 : $yyerrorhit = 0; /* True if yymajor has invoked an error */
2493 :
2494 : /* (re)initialize the parser, if necessary */
2495 336 : if ($this->yyidx === null || $this->yyidx < 0) {
2496 : /* if ($yymajor == 0) return; // not sure why this was here... */
2497 336 : $this->yyidx = 0;
2498 336 : $this->yyerrcnt = -1;
2499 336 : $x = new TP_yyStackEntry;
2500 336 : $x->stateno = 0;
2501 336 : $x->major = 0;
2502 336 : $this->yystack = array();
2503 336 : array_push($this->yystack, $x);
2504 336 : }
2505 336 : $yyendofinput = ($yymajor==0);
2506 :
2507 336 : if (self::$yyTraceFILE) {
2508 0 : fprintf(self::$yyTraceFILE, "%sInput %s\n",
2509 0 : self::$yyTracePrompt, $this->yyTokenName[$yymajor]);
2510 0 : }
2511 :
2512 : do {
2513 336 : $yyact = $this->yy_find_shift_action($yymajor);
2514 336 : if ($yymajor < self::YYERRORSYMBOL &&
2515 336 : !$this->yy_is_expected_token($yymajor)) {
2516 : // force a syntax error
2517 0 : $yyact = self::YY_ERROR_ACTION;
2518 0 : }
2519 336 : if ($yyact < self::YYNSTATE) {
2520 336 : $this->yy_shift($yyact, $yymajor, $yytokenvalue);
2521 336 : $this->yyerrcnt--;
2522 336 : if ($yyendofinput && $this->yyidx >= 0) {
2523 0 : $yymajor = 0;
2524 0 : } else {
2525 336 : $yymajor = self::YYNOCODE;
2526 : }
2527 336 : } elseif ($yyact < self::YYNSTATE + self::YYNRULE) {
2528 335 : $this->yy_reduce($yyact - self::YYNSTATE);
2529 336 : } elseif ($yyact == self::YY_ERROR_ACTION) {
2530 1 : if (self::$yyTraceFILE) {
2531 0 : fprintf(self::$yyTraceFILE, "%sSyntax Error!\n",
2532 0 : self::$yyTracePrompt);
2533 0 : }
2534 1 : if (self::YYERRORSYMBOL) {
2535 : /* A syntax error has occurred.
2536 : ** The response to an error depends upon whether or not the
2537 : ** grammar defines an error token "ERROR".
2538 : **
2539 : ** This is what we do if the grammar does define ERROR:
2540 : **
2541 : ** * Call the %syntax_error function.
2542 : **
2543 : ** * Begin popping the stack until we enter a state where
2544 : ** it is legal to shift the error symbol, then shift
2545 : ** the error symbol.
2546 : **
2547 : ** * Set the error count to three.
2548 : **
2549 : ** * Begin accepting and shifting new tokens. No new error
2550 : ** processing will occur until three tokens have been
2551 : ** shifted successfully.
2552 : **
2553 : */
2554 1 : if ($this->yyerrcnt < 0) {
2555 1 : $this->yy_syntax_error($yymajor, $yytokenvalue);
2556 0 : }
2557 0 : $yymx = $this->yystack[$this->yyidx]->major;
2558 0 : if ($yymx == self::YYERRORSYMBOL || $yyerrorhit ){
2559 0 : if (self::$yyTraceFILE) {
2560 0 : fprintf(self::$yyTraceFILE, "%sDiscard input token %s\n",
2561 0 : self::$yyTracePrompt, $this->yyTokenName[$yymajor]);
2562 0 : }
2563 0 : $this->yy_destructor($yymajor, $yytokenvalue);
2564 0 : $yymajor = self::YYNOCODE;
2565 0 : } else {
2566 0 : while ($this->yyidx >= 0 &&
2567 0 : $yymx != self::YYERRORSYMBOL &&
2568 0 : ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE
2569 0 : ){
2570 0 : $this->yy_pop_parser_stack();
2571 0 : }
2572 0 : if ($this->yyidx < 0 || $yymajor==0) {
2573 0 : $this->yy_destructor($yymajor, $yytokenvalue);
2574 0 : $this->yy_parse_failed();
2575 0 : $yymajor = self::YYNOCODE;
2576 0 : } elseif ($yymx != self::YYERRORSYMBOL) {
2577 0 : $u2 = 0;
2578 0 : $this->yy_shift($yyact, self::YYERRORSYMBOL, $u2);
2579 0 : }
2580 : }
2581 0 : $this->yyerrcnt = 3;
2582 0 : $yyerrorhit = 1;
2583 0 : } else {
2584 : /* YYERRORSYMBOL is not defined */
2585 : /* This is what we do if the grammar does not define ERROR:
2586 : **
2587 : ** * Report an error message, and throw away the input token.
2588 : **
2589 : ** * If the input token is $, then fail the parse.
2590 : **
2591 : ** As before, subsequent error messages are suppressed until
2592 : ** three input tokens have been successfully shifted.
2593 : */
2594 0 : if ($this->yyerrcnt <= 0) {
2595 0 : $this->yy_syntax_error($yymajor, $yytokenvalue);
2596 0 : }
2597 0 : $this->yyerrcnt = 3;
2598 0 : $this->yy_destructor($yymajor, $yytokenvalue);
2599 0 : if ($yyendofinput) {
2600 0 : $this->yy_parse_failed();
2601 0 : }
2602 0 : $yymajor = self::YYNOCODE;
2603 : }
2604 0 : } else {
2605 0 : $this->yy_accept();
2606 0 : $yymajor = self::YYNOCODE;
2607 : }
2608 336 : } while ($yymajor != self::YYNOCODE && $this->yyidx >= 0);
2609 336 : }
2610 : }
|